[hdf5] 10/14: Imported Upstream version 1.10.0-patch1+docs

Gilles Filippini pini at debian.org
Sun May 22 10:39:07 UTC 2016


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

pini pushed a commit to branch master-1.10
in repository hdf5.

commit d2a3490c60e4b6ad3ed4e1881dab6f26987d5201
Author: Gilles Filippini <pini at debian.org>
Date:   Sat May 21 15:28:31 2016 +0200

    Imported Upstream version 1.10.0-patch1+docs
---
 CMakeLists.txt                                     |     2 +
 MANIFEST                                           |    12 +-
 README.txt                                         |     2 +-
 c++/src/Makefile.in                                |     6 +-
 c++/src/cpp_doc_config                             |     2 +-
 config/cmake/CTestCustom.cmake                     |    22 +-
 config/cmake/ConfigureChecks.cmake                 |     5 +-
 config/cmake/HDF5UseFortran.cmake                  |    97 +-
 config/cmake/mccacheinit.cmake                     |     2 +-
 config/lt_vers.am                                  |     6 +-
 configure                                          |   250 +-
 configure.ac                                       |     8 +-
 examples/CMakeTests.cmake                          |    14 +
 fortran/examples/CMakeTests.cmake                  |     4 +
 fortran/src/H5_buildiface.F90                      |     2 +-
 fortran/src/H5f90global.F90                        |     8 +-
 fortran/src/Makefile.in                            |     6 +-
 fortran/test/CMakeTests.cmake                      |    93 +-
 hl/c++/src/Makefile.in                             |     6 +-
 hl/fortran/examples/CMakeTests.cmake               |    11 +
 hl/fortran/src/Makefile.in                         |     6 +-
 hl/src/CMakeLists.txt                              |     2 +
 hl/src/Makefile.in                                 |     6 +-
 hl/test/CMakeLists.txt                             |    27 +-
 hl/test/CMakeTests.cmake                           |    24 +-
 hl/test/dectris_hl_perf.c                          |    69 +-
 hl/tools/CMakeLists.txt                            |    64 +-
 hl/tools/{ => gif2h5}/CMakeLists.txt               |    34 +-
 hl/tools/{ => gif2h5}/CMakeTests.cmake             |     8 +-
 hl/tools/h5watch/CMakeLists.txt                    |    59 +
 hl/tools/h5watch/CMakeTests.cmake                  |   191 +
 hl/tools/h5watch/extend_dset.c                     |    29 +-
 hl/tools/h5watch/h5watch.c                         |     7 -
 hl/tools/h5watch/h5watchgentest.c                  |    13 +-
 hl/tools/h5watch/testh5watch.sh.in                 |     4 -
 hl/tools/testfiles/w-err-cmpd1.ddl                 |     3 -
 hl/tools/testfiles/w-err-cmpd2.ddl                 |     3 -
 hl/tools/testfiles/w-err-cmpd3.ddl                 |     3 -
 hl/tools/testfiles/w-err-cmpd4.ddl                 |     3 -
 hl/tools/testfiles/w-err-cmpd5.ddl                 |     3 -
 hl/tools/testfiles/w-err-dset-nomax.ddl            |     3 -
 hl/tools/testfiles/w-err-dset-none.ddl             |     3 -
 hl/tools/testfiles/w-err-dset1.ddl                 |     3 -
 hl/tools/testfiles/w-err-dset2.ddl                 |     3 -
 hl/tools/testfiles/w-err-file.ddl                  |     3 -
 hl/tools/testfiles/w-err-poll.ddl                  |     3 -
 hl/tools/testfiles/w-err-poll0.ddl                 |     3 -
 hl/tools/testfiles/w-err-width.ddl                 |     3 -
 hl/tools/testfiles/w-ext-cmpd-esc-f1.ddl           |     3 -
 hl/tools/testfiles/w-ext-cmpd-esc-f3.ddl           |     3 -
 hl/tools/testfiles/w-ext-cmpd-esc-ff2.ddl          |     3 -
 hl/tools/testfiles/w-ext-cmpd-esc.ddl              |     3 -
 hl/tools/testfiles/w-ext-cmpd-f1.ddl               |     3 -
 hl/tools/testfiles/w-ext-cmpd-f2.ddl               |     3 -
 hl/tools/testfiles/w-ext-cmpd-ff3.ddl              |     3 -
 hl/tools/testfiles/w-ext-cmpd-label.ddl            |     3 -
 hl/tools/testfiles/w-ext-cmpd-two-f1.ddl           |     3 -
 hl/tools/testfiles/w-ext-cmpd-two-f3.ddl           |     3 -
 hl/tools/testfiles/w-ext-cmpd-two-ff2.ddl          |     3 -
 hl/tools/testfiles/w-ext-cmpd-two.ddl              |     3 -
 hl/tools/testfiles/w-ext-cmpd.ddl                  |     3 -
 hl/tools/testfiles/w-ext-early.ddl                 |     3 -
 hl/tools/testfiles/w-ext-late.ddl                  |     3 -
 hl/tools/testfiles/w-ext-one-d.ddl                 |     3 -
 hl/tools/testfiles/w-ext-one-simple.ddl            |     3 -
 hl/tools/testfiles/w-ext-one.ddl                   |     3 -
 hl/tools/testfiles/w-ext-two-d.ddl                 |     3 -
 hl/tools/testfiles/w-ext-two-width.ddl             |     3 -
 hl/tools/testfiles/w-ext-two.ddl                   |     3 -
 hl/tools/testfiles/w-help1.ddl                     |     3 -
 html/Advanced/UsingUnicode/index.html              |    19 +-
 html/H5.format.html                                | 20082 +++++++++++--------
 html/HL/RM_H5LT.html                               |     6 +-
 html/HL/RM_H5PT.html                               |   405 +-
 html/HL/RM_H5PT_c++.html                           |  3018 +--
 html/RM/H5/H5free_memory.htm                       |    31 +-
 html/RM/H5A/H5Aopen_by_idx.htm                     |    66 +-
 ...5Fare_mdc_flushes_disabled_NOT_IMPLEMENTED.htm} |     0
 ... => H5Fdisable_mdc_flushes_NOT_IMPLEMENTED.htm} |     0
 ...m => H5Fenable_mdc_flushes_NOT_IMPLEMENTED.htm} |     0
 ...mdc_flush_disabled_obj_ids_NOT_IMPLEMENTED.htm} |     0
 html/RM/H5O/H5Oenable_mdc_flushes.htm              |     8 +-
 html/RM/H5P/H5Pget_efile_prefix.htm                |   162 +
 html/RM/H5P/H5Pget_layout.htm                      |     4 +-
 html/RM/H5P/H5Pget_virtual_count.htm               |    38 +-
 html/RM/H5P/H5Pget_virtual_dsetname.htm            |    38 +-
 html/RM/H5P/H5Pget_virtual_filename.htm            |    38 +-
 html/RM/H5P/H5Pget_virtual_printf_gap.htm          |    38 +-
 html/RM/H5P/H5Pget_virtual_srcspace.htm            |    38 +-
 html/RM/H5P/H5Pget_virtual_view.htm                |    38 +-
 html/RM/H5P/H5Pget_virtual_vspace.htm              |    38 +-
 html/RM/H5P/H5Pset_efile_prefix.htm                |   191 +
 html/RM/H5P/H5Pset_layout.htm                      |     4 +-
 html/RM/H5P/H5Pset_virtual.htm                     |    38 +-
 html/RM/H5P/H5Pset_virtual_printf_gap.htm          |    38 +-
 html/RM/H5P/H5Pset_virtual_view.htm                |    38 +-
 html/RM/H5S/H5Sget_regular_hyperslab.htm           |    44 +-
 html/RM/H5S/H5Sis_regular_hyperslab.htm            |    44 +-
 html/RM/H5T/H5Tget_member_name.htm                 |    16 +-
 html/RM/RM_H5P.html                                |   124 +-
 html/RM/RM_H5S.html                                |    23 +-
 html/RM/Tools.html                                 |    24 +-
 html/RM/Tools/h5clear.htm                          |     4 +-
 html/RM/Tools/h5format_convert.htm                 |    54 +-
 html/ed_libs/Footer-THGonly.htm                    |     2 +-
 html/ed_libs/Footer-THGonly2.htm                   |     2 +-
 html/ed_libs/Footer-THGonly3.htm                   |     2 +-
 html/ed_libs/Footer.htm                            |     2 +-
 html/ed_libs/Footer2.htm                           |     2 +-
 html/ed_libs/Footer3.htm                           |     2 +-
 html/index.html                                    |     6 +-
 java/examples/datasets/CMakeLists.txt              |    13 +-
 java/examples/datatypes/CMakeLists.txt             |    11 +-
 java/examples/groups/CMakeLists.txt                |    19 +-
 java/examples/intro/CMakeLists.txt                 |    11 +-
 java/src/hdf/hdf5lib/CMakeLists.txt                |     2 +-
 java/src/jni/Makefile.in                           |     6 +-
 java/test/junit.sh.in                              |    17 +-
 m4/aclocal_fc.m4                                   |   105 +-
 release_docs/RELEASE.txt                           |   106 +-
 src/H5Dint.c                                       |    72 +-
 src/H5public.h                                     |     4 +-
 src/Makefile.in                                    |     6 +-
 test/CMakeLists.txt                                |   286 +-
 test/CMakeTests.cmake                              |   621 +-
 test/atomic_reader.c                               |    24 +-
 test/atomic_writer.c                               |    28 +-
 test/cache.c                                       |     2 -
 test/cache_api.c                                   |     2 -
 test/cache_common.h                                |   127 +-
 test/dsets.c                                       |     7 +-
 test/gen_plist.c                                   |    16 +-
 test/h5test.c                                      |     3 +-
 test/swmr_common.h                                 |    24 +-
 test/test_usecases.sh.in                           |     1 +
 test/ttsafe_cancel.c                               |     4 +-
 test/twriteorder.c                                 |    75 +-
 test/use.h                                         |     6 -
 test/use_append_chunk.c                            |    23 +-
 test/use_append_mchunks.c                          |    23 +-
 test/use_common.c                                  |    37 +-
 test/use_disable_mdc_flushes.c                     |    19 +
 test/vds.c                                         |    13 +
 testpar/t_shapesame.c                              |     2 +-
 testpar/t_span_tree.c                              |     2 +-
 testpar/testphdf5.c                                |     2 +-
 tools/CMakeLists.txt                               |     3 +
 tools/h5copy/CMakeTests.cmake                      |     2 +-
 tools/h5diff/CMakeTests.cmake                      |    31 +-
 tools/h5diff/testfiles/h5diff_v1.txt               |     2 +-
 tools/h5diff/testfiles/h5diff_v3.txt               |     2 +-
 tools/h5diff/testh5diff.sh.in                      |    11 +-
 tools/h5dump/CMakeTests.cmake                      |     5 +-
 tools/h5dump/CMakeTestsPBITS.cmake                 |     6 +-
 tools/h5dump/CMakeTestsVDS.cmake                   |    10 +-
 tools/h5dump/CMakeTestsXML.cmake                   |     4 +-
 tools/h5dump/testh5dump.sh.in                      |     2 +
 tools/h5format_convert/CMakeLists.txt              |    59 +
 tools/h5format_convert/CMakeTests.cmake            |   463 +
 tools/h5format_convert/h5format_convert.c          |    50 +-
 tools/h5format_convert/testfiles/h5fc_d_file.ddl   |    10 +-
 tools/h5format_convert/testfiles/h5fc_dname.ddl    |    10 +-
 tools/h5format_convert/testfiles/h5fc_ext1_f.ddl   |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext1_i.ddl   |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext1_s.ddl   |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext2_if.ddl  |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext2_is.ddl  |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl  |     2 +-
 tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl |     2 +-
 tools/h5format_convert/testfiles/h5fc_help.ddl     |    10 +-
 tools/h5format_convert/testfiles/h5fc_nooption.ddl |    10 +-
 tools/h5format_convert/testfiles/h5fc_v_all.ddl    |     2 +-
 tools/h5format_convert/testfiles/h5fc_v_bt1.ddl    |     2 +-
 tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl   |     2 +-
 tools/h5format_convert/testfiles/h5fc_v_n_all.ddl  |     2 +-
 .../testfiles/h5fc_v_ndata_bt1.ddl                 |     2 +-
 .../testfiles/h5fc_v_non_chunked.ddl               |     2 +-
 .../h5format_convert/testfiles/old_h5fc_ext1_f.ddl |     2 +-
 .../h5format_convert/testfiles/old_h5fc_ext1_i.ddl |     2 +-
 .../h5format_convert/testfiles/old_h5fc_ext1_s.ddl |     2 +-
 .../testfiles/old_h5fc_ext2_if.ddl                 |     2 +-
 .../testfiles/old_h5fc_ext2_is.ddl                 |     2 +-
 .../testfiles/old_h5fc_ext2_sf.ddl                 |     2 +-
 .../testfiles/old_h5fc_ext3_isf.ddl                |     2 +-
 tools/h5format_convert/testh5fc.sh.in              |    95 +-
 tools/h5import/h5importtestutil.sh.in              |    44 +-
 tools/h5ls/CMakeTests.cmake                        |     9 +-
 tools/h5ls/CMakeTestsVDS.cmake                     |     2 +-
 tools/h5repack/CMakeTests.cmake                    |   127 +-
 tools/h5repack/h5repack.sh.in                      |   118 +-
 .../testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl |   112 +
 .../testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl        |    70 +
 .../testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl      |   147 +
 tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl  |    58 +
 tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl  |    59 +
 tools/h5stat/CMakeTests.cmake                      |     4 +
 tools/h5stat/h5stat_gentest.c                      |     7 +-
 tools/lib/h5diff_attr.c                            |   471 +-
 tools/lib/h5diff_dset.c                            |    41 +-
 tools/misc/CMakeLists.txt                          |    19 +
 tools/misc/CMakeTests.cmake                        |   136 +-
 tools/misc/clear_open_chk.c                        |     2 +
 tools/perform/overhead.c                           |     4 -
 tools/perform/perf.c                               |    18 +-
 tools/perform/pio_engine.c                         |    16 +-
 tools/perform/pio_perf.c                           |     2 +-
 tools/perform/sio_engine.c                         |    18 +-
 207 files changed, 17586 insertions(+), 12375 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 648ae7a..9359084 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -186,6 +186,8 @@ set (HDF5_CPP_SRC_DIR        ${HDF5_SOURCE_DIR}/c++)
 set (HDF5_CPP_TST_DIR        ${HDF5_SOURCE_DIR}/c++/test)
 set (HDF5_HL_SRC_DIR         ${HDF5_SOURCE_DIR}/hl)
 set (HDF5_HL_CPP_SRC_DIR     ${HDF5_SOURCE_DIR}/hl/c++)
+set (HDF5_HL_TOOLS_DIR       ${HDF5_SOURCE_DIR}/hl/tools)
+set (HDF5_TOOLS_DIR          ${HDF5_SOURCE_DIR}/tools)
 set (HDF5_TOOLS_SRC_DIR      ${HDF5_SOURCE_DIR}/tools)
 set (HDF5_PERFORM_SRC_DIR    ${HDF5_SOURCE_DIR}/tools/perform)
 set (HDF5_F90_SRC_DIR        ${HDF5_SOURCE_DIR}/fortran)
diff --git a/MANIFEST b/MANIFEST
index b4b2793..a3b879e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2347,6 +2347,11 @@
 ./tools/h5repack/testfiles/h5repack_layout.h5.ddl
 ./tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
 ./tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl
+./tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
+./tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
+./tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
+./tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl
+./tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
 
 # jam utility and tests
 ./tools/h5jam/h5jam.c
@@ -3018,7 +3023,10 @@
 ./hl/test/CMakeLists.txt
 ./hl/test/CMakeTests.cmake
 ./hl/tools/CMakeLists.txt
-./hl/tools/CMakeTests.cmake
+./hl/tools/gif2h5/CMakeLists.txt
+./hl/tools/gif2h5/CMakeTests.cmake
+./hl/tools/h5watch/CMakeLists.txt
+./hl/tools/h5watch/CMakeTests.cmake
 ./src/CMakeLists.txt
 ./test/CMakeLists.txt
 ./test/CMakeTests.cmake
@@ -3034,6 +3042,8 @@
 ./tools/h5dump/CMakeTestsPBITS.cmake
 ./tools/h5dump/CMakeTestsXML.cmake
 ./tools/h5dump/CMakeTestsVDS.cmake
+./tools/h5format_convert/CMakeLists.txt
+./tools/h5format_convert/CMakeTests.cmake
 ./tools/h5import/CMakeLists.txt
 ./tools/h5import/CMakeTests.cmake
 ./tools/h5jam/CMakeLists.txt
diff --git a/README.txt b/README.txt
index ce12bb4..4216633 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.10.0 released on 2016-03-30
+HDF5 version 1.10.0-patch1 released on 2016-05-18
 Please refer to the release_docs/INSTALL file for installation instructions.
 ------------------------------------------------------------------------------
 
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index 4479889..cdd0756 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -746,13 +746,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -767,7 +767,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # This is our main target
diff --git a/c++/src/cpp_doc_config b/c++/src/cpp_doc_config
index 2834289..69807eb 100644
--- a/c++/src/cpp_doc_config
+++ b/c++/src/cpp_doc_config
@@ -38,7 +38,7 @@ PROJECT_NAME           = "HDF5 C++ API"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "1.10.0"
+PROJECT_NUMBER         = "1.10.0-patch1 currently under development"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/config/cmake/CTestCustom.cmake b/config/cmake/CTestCustom.cmake
index 41cb488..b8d8106 100644
--- a/config/cmake/CTestCustom.cmake
+++ b/config/cmake/CTestCustom.cmake
@@ -1,5 +1,5 @@
 set (CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 3000)
- 
+
 set (CTEST_CUSTOM_WARNING_EXCEPTION
     ${CTEST_CUSTOM_WARNING_EXCEPTION}
 #    "H5detect.c.[0-9]+.[ \t]*:[ \t]*warning C4090:"
@@ -16,7 +16,7 @@ set (CTEST_CUSTOM_WARNING_EXCEPTION
 #    "note: expanded from macro"
 #    "fpp:[ \t]*warning:[ \t]*cannot remove H5_DEBUG_API - not a predefined macro"
 )
- 
+
 set (CTEST_CUSTOM_MEMCHECK_IGNORE
     ${CTEST_CUSTOM_MEMCHECK_IGNORE}
     H5TEST-flush1           #designed to fail
@@ -37,7 +37,12 @@ set (CTEST_CUSTOM_MEMCHECK_IGNORE
     PERFORM_h5perform-clear-objects
     HL_TOOLS-clear-objects
     HL_test-clear-objects
-    HL_fortran_test-clear-objects
+    HL_FORTRAN_test-clear-objects
+    FORTRAN_testhdf5-clear-objects
+    CPP_testhdf5-clear-objects
+    ######### tools/h5clear #########
+    H5CLEAR-clearall-objects
+    H5CLEAR-h5clear_gentest      # does not close ids by design
     ######### tools/h5copy #########
     H5COPY-clearall-objects
     ######### tools/h5diff #########
@@ -46,7 +51,11 @@ set (CTEST_CUSTOM_MEMCHECK_IGNORE
     H5DUMP-clearall-objects
     H5DUMP_PACKED_BITS-clearall-objects
     H5DUMP-XML-clearall-objects
+    H5DUMP_VDS-clearall-objects
+    ######### tools/h5format_convert #########
+    H5FC-clearall-objects
     ######### tools/h5import #########
+    H5IMPORT-h5importtest-clear-objects
     H5IMPORT-clear-objects
     ######### tools/h5jam #########
     H5JAM-SETUP-N_twithub_u10_c-clear-objects
@@ -181,6 +190,7 @@ set (CTEST_CUSTOM_MEMCHECK_IGNORE
     H5JAM-NONE_COPY-ta_u513
     ######### tools/h5ls #########
     H5LS-clearall-objects
+    H5LS_VDS-clearall-objects
     ######### tools/h5repack #########
     H5REPACK-clearall-objects
     H5REPACK-gzip_verbose_filters                       #uses runTest.cmake
@@ -209,7 +219,13 @@ set (CTEST_CUSTOM_MEMCHECK_IGNORE
     ######### tools/misc #########
     H5REPART-clearall-objects
     H5MKGRP-clearall-objects
+    ######### hl/tools/h5watch #########
+    H5WATCH-clearall-objects
     ######### examples #########
     EXAMPLES-clear-objects
     CPP_ex-clear-objects
+    CPP_ex_tutr-clear-objects
+    HL_ex-clear-objects
+    f90_ex-clear-objects
+    HL_FORTRAN_f90_ex-clear-objects
 )
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index 49e9a05..ec0aecf 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -3,7 +3,10 @@
 #-----------------------------------------------------------------------------
 set (HDF_PREFIX "H5")
 include (${HDF_RESOURCES_EXT_DIR}/ConfigureChecks.cmake)
-include (${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake)
+
+if (HDF5_ENABLE_USING_MEMCHECKER)
+  set (H5_USING_MEMCHECKER 1)
+endif (HDF5_ENABLE_USING_MEMCHECKER)
 
 #-----------------------------------------------------------------------------
 # Option for --enable-strict-format-checks
diff --git a/config/cmake/HDF5UseFortran.cmake b/config/cmake/HDF5UseFortran.cmake
index c3e5a24..75bd17c 100644
--- a/config/cmake/HDF5UseFortran.cmake
+++ b/config/cmake/HDF5UseFortran.cmake
@@ -140,55 +140,64 @@ endif(FORTRAN_HAVE_STORAGE_SIZE)
 #-----------------------------------------------------------------------------
 
 FORTRAN_RUN("REAL and INTEGER KINDs"
-  "  
-       PROGRAM main
+  "      
+         PROGRAM main
            IMPLICIT NONE
-           INTEGER :: ik, k, lastkind, max_decimal_prec
-	   INTEGER :: num_rkinds, num_ikinds
-           num_ikinds = 0
-           lastkind=SELECTED_INT_KIND(1)
+           INTEGER :: ik, jk, k, max_decimal_prec
+           INTEGER :: num_rkinds = 1, num_ikinds = 1
+           INTEGER, DIMENSION(1:10) :: list_ikinds = -1
+           INTEGER, DIMENSION(1:10) :: list_rkinds = -1
+
            ! Find integer KINDs
-           DO ik=2,36
-                k = SELECTED_INT_KIND(ik)
-                IF (k .NE. lastkind) THEN
-	             num_ikinds = num_ikinds + 1	
-                     WRITE(*,'(I0)',ADVANCE='NO') lastkind
-                     lastkind = k
-             	     IF(k.GT.0) WRITE(*,'(A)',ADVANCE='NO') ','	
-                ENDIF
-                IF (k .LE. 0) EXIT
+           list_ikinds(num_ikinds)=SELECTED_INT_KIND(1)
+           DO ik = 2, 36
+              k = SELECTED_INT_KIND(ik)
+              IF(k.LT.0) EXIT
+              IF(k.GT.list_ikinds(num_ikinds))THEN
+                 num_ikinds = num_ikinds + 1
+                 list_ikinds(num_ikinds) = k
+              ENDIF
+           ENDDO
+
+           DO k = 1, num_ikinds
+              WRITE(*,'(I0)', ADVANCE='NO') list_ikinds(k)
+              IF(k.NE.num_ikinds)THEN
+                 WRITE(*,'(A)',ADVANCE='NO') ','
+              ELSE
+                 WRITE(*,'()')
+              ENDIF
            ENDDO
-      	   IF (lastkind.NE.-1) THEN
-	      num_ikinds = num_ikinds + 1	
-              WRITE(*,'(I0)') lastkind
-	   ELSE
-              WRITE(*,'()')
-           ENDIF
+
            ! Find real KINDs
-           num_rkinds = 0
-           lastkind=SELECTED_REAL_KIND(1)
-	   max_decimal_prec = 1
-           DO ik=2,36
-                k = SELECTED_REAL_KIND(ik)
-                IF (k .NE. lastkind) THEN
-                     num_rkinds = num_rkinds + 1
-                     WRITE(*,'(I0)',ADVANCE='NO') lastkind
-                     lastkind = k
-             	     IF(k.GT.0) WRITE(*,'(A)',ADVANCE='NO') ','
-	             max_decimal_prec = ik
-                ENDIF
-                IF (k .LE. 0) EXIT
+           list_rkinds(num_rkinds)=SELECTED_REAL_KIND(1)
+           max_decimal_prec = 1
+
+           prec: DO ik = 2, 36
+              exp: DO jk = 1, 17000
+                 k = SELECTED_REAL_KIND(ik,jk)
+                 IF(k.LT.0) EXIT exp
+                 IF(k.GT.list_rkinds(num_rkinds))THEN
+                    num_rkinds = num_rkinds + 1
+                    list_rkinds(num_rkinds) = k
+                 ENDIF
+                 max_decimal_prec = ik
+              ENDDO exp
+           ENDDO prec
+
+           DO k = 1, num_rkinds
+              WRITE(*,'(I0)', ADVANCE='NO') list_rkinds(k)
+              IF(k.NE.num_rkinds)THEN
+                 WRITE(*,'(A)',ADVANCE='NO') ','
+              ELSE
+                 WRITE(*,'()')
+              ENDIF
            ENDDO
-           IF (lastkind.NE.-1)THEN
-	       num_rkinds = num_rkinds + 1
-               WRITE(*,'(I0)') lastkind
-	   ELSE
-              WRITE(*,'()')
-           ENDIF
-	   WRITE(*,'(I0)') max_decimal_prec
-	   WRITE(*,'(I0)') num_ikinds
-	   WRITE(*,'(I0)') num_rkinds
-       END
+
+           WRITE(*,'(I0)') max_decimal_prec
+           WRITE(*,'(I0)') num_ikinds
+           WRITE(*,'(I0)') num_rkinds
+    
+         END PROGRAM main
   "
   XX
   YY
diff --git a/config/cmake/mccacheinit.cmake b/config/cmake/mccacheinit.cmake
index 2bebcf2..261cb92 100644
--- a/config/cmake/mccacheinit.cmake
+++ b/config/cmake/mccacheinit.cmake
@@ -6,7 +6,7 @@
 
 set (CMAKE_INSTALL_FRAMEWORK_PREFIX "Library/Frameworks" CACHE STRING "Frameworks installation directory" FORCE)
 
-set (HDF5_GENERATE_HEADERS ON CACHE BOOL "Rebuild Generated Files" FORCE)
+set (HDF5_GENERATE_HEADERS OFF CACHE BOOL "Rebuild Generated Files" FORCE)
 
 set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build Shared Libraries" FORCE)
 
diff --git a/config/lt_vers.am b/config/lt_vers.am
index c6a5c03..74739bc 100644
--- a/config/lt_vers.am
+++ b/config/lt_vers.am
@@ -19,7 +19,7 @@
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 
 ## If the API changes *at all*, increment LT_VERS_INTERFACE and
@@ -46,7 +46,7 @@ LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 
 LT_HL_VERS_INTERFACE = 100
@@ -66,7 +66,7 @@ LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # Copyright by The HDF Group.
diff --git a/configure b/configure
index 9529250..59bd48f 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac Id: configure.ac 22697 2012-08-19 14:35:47Z hdftest .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HDF5 1.10.0.
+# Generated by GNU Autoconf 2.69 for HDF5 1.10.0-patch1.
 #
 # Report bugs to <help at hdfgroup.org>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='HDF5'
 PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.10.0'
-PACKAGE_STRING='HDF5 1.10.0'
+PACKAGE_VERSION='1.10.0-patch1'
+PACKAGE_STRING='HDF5 1.10.0-patch1'
 PACKAGE_BUGREPORT='help at hdfgroup.org'
 PACKAGE_URL=''
 
@@ -1522,7 +1522,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 HDF5 1.10.0 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.10.0-patch1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1592,7 +1592,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of HDF5 1.10.0:";;
+     short | recursive ) echo "Configuration of HDF5 1.10.0-patch1:";;
    esac
   cat <<\_ACEOF
 
@@ -1844,7 +1844,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-HDF5 configure 1.10.0
+HDF5 configure 1.10.0-patch1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2759,7 +2759,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by HDF5 $as_me 1.10.0, which was
+It was created by HDF5 $as_me 1.10.0-patch1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3631,7 +3631,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='hdf5'
- VERSION='1.10.0'
+ VERSION='1.10.0-patch1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -7916,54 +7916,63 @@ else
 
 
     PROGRAM main
-        IMPLICIT NONE
-        INTEGER :: ik, k, lastkind, max_decimal_prec
-	INTEGER :: num_rkinds, num_ikinds
-        num_ikinds = 0
-        lastkind=SELECTED_INT_KIND(1)
-        OPEN(8, FILE='pac_fconftest.out', form='formatted')
-        ! Find integer KINDs
-        DO ik=2,36
-             k = SELECTED_INT_KIND(ik)
-             IF (k .NE. lastkind) THEN
-	          num_ikinds = num_ikinds + 1
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-	IF (lastkind.NE.-1) THEN
-	   num_ikinds = num_ikinds + 1
-           WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-        ! Find real KINDs
-        num_rkinds = 0
-        lastkind=SELECTED_REAL_KIND(1)
-	max_decimal_prec = 1
-        DO ik=2,36
-             k = SELECTED_REAL_KIND(ik)
-             IF (k .NE. lastkind) THEN
-                  num_rkinds = num_rkinds + 1
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','
-	          max_decimal_prec = ik
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-        IF (lastkind.NE.-1)THEN
-	    num_rkinds = num_rkinds + 1
-            WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-	WRITE(8,'(I0)') max_decimal_prec
-	WRITE(8,'(I0)') num_ikinds
-	WRITE(8,'(I0)') num_rkinds
-    END
+      IMPLICIT NONE
+      INTEGER :: ik, jk, k, max_decimal_prec
+      INTEGER :: num_rkinds = 1, num_ikinds = 1
+      INTEGER, DIMENSION(1:10) :: list_ikinds = -1
+      INTEGER, DIMENSION(1:10) :: list_rkinds = -1
+
+      OPEN(8, FILE='pac_fconftest.out', FORM='formatted')
+
+      ! Find integer KINDs
+      list_ikinds(num_ikinds)=SELECTED_INT_KIND(1)
+      DO ik = 2, 36
+         k = SELECTED_INT_KIND(ik)
+         IF(k.LT.0) EXIT
+         IF(k.GT.list_ikinds(num_ikinds))THEN
+            num_ikinds = num_ikinds + 1
+            list_ikinds(num_ikinds) = k
+         ENDIF
+      ENDDO
+
+      DO k = 1, num_ikinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_ikinds(k)
+         IF(k.NE.num_ikinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+      ! Find real KINDs
+      list_rkinds(num_rkinds)=SELECTED_REAL_KIND(1)
+      max_decimal_prec = 1
+
+      prec: DO ik = 2, 36
+         exp: DO jk = 1, 17000
+            k = SELECTED_REAL_KIND(ik,jk)
+            IF(k.LT.0) EXIT exp
+            IF(k.GT.list_rkinds(num_rkinds))THEN
+               num_rkinds = num_rkinds + 1
+               list_rkinds(num_rkinds) = k
+            ENDIF
+            max_decimal_prec = ik
+         ENDDO exp
+      ENDDO prec
+
+      DO k = 1, num_rkinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_rkinds(k)
+         IF(k.NE.num_rkinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+     WRITE(8,'(I0)') max_decimal_prec
+     WRITE(8,'(I0)') num_ikinds
+     WRITE(8,'(I0)') num_rkinds
+    END PROGRAM main
 
 
 _ACEOF
@@ -8139,54 +8148,63 @@ else
 
 
     PROGRAM main
-        IMPLICIT NONE
-        INTEGER :: ik, k, lastkind, max_decimal_prec
-	INTEGER :: num_rkinds, num_ikinds
-        num_ikinds = 0
-        lastkind=SELECTED_INT_KIND(1)
-        OPEN(8, FILE='pac_fconftest.out', form='formatted')
-        ! Find integer KINDs
-        DO ik=2,36
-             k = SELECTED_INT_KIND(ik)
-             IF (k .NE. lastkind) THEN
-	          num_ikinds = num_ikinds + 1
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-	IF (lastkind.NE.-1) THEN
-	   num_ikinds = num_ikinds + 1
-           WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-        ! Find real KINDs
-        num_rkinds = 0
-        lastkind=SELECTED_REAL_KIND(1)
-	max_decimal_prec = 1
-        DO ik=2,36
-             k = SELECTED_REAL_KIND(ik)
-             IF (k .NE. lastkind) THEN
-                  num_rkinds = num_rkinds + 1
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','
-	          max_decimal_prec = ik
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-        IF (lastkind.NE.-1)THEN
-	    num_rkinds = num_rkinds + 1
-            WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-	WRITE(8,'(I0)') max_decimal_prec
-	WRITE(8,'(I0)') num_ikinds
-	WRITE(8,'(I0)') num_rkinds
-    END
+      IMPLICIT NONE
+      INTEGER :: ik, jk, k, max_decimal_prec
+      INTEGER :: num_rkinds = 1, num_ikinds = 1
+      INTEGER, DIMENSION(1:10) :: list_ikinds = -1
+      INTEGER, DIMENSION(1:10) :: list_rkinds = -1
+
+      OPEN(8, FILE='pac_fconftest.out', FORM='formatted')
+
+      ! Find integer KINDs
+      list_ikinds(num_ikinds)=SELECTED_INT_KIND(1)
+      DO ik = 2, 36
+         k = SELECTED_INT_KIND(ik)
+         IF(k.LT.0) EXIT
+         IF(k.GT.list_ikinds(num_ikinds))THEN
+            num_ikinds = num_ikinds + 1
+            list_ikinds(num_ikinds) = k
+         ENDIF
+      ENDDO
+
+      DO k = 1, num_ikinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_ikinds(k)
+         IF(k.NE.num_ikinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+      ! Find real KINDs
+      list_rkinds(num_rkinds)=SELECTED_REAL_KIND(1)
+      max_decimal_prec = 1
+
+      prec: DO ik = 2, 36
+         exp: DO jk = 1, 17000
+            k = SELECTED_REAL_KIND(ik,jk)
+            IF(k.LT.0) EXIT exp
+            IF(k.GT.list_rkinds(num_rkinds))THEN
+               num_rkinds = num_rkinds + 1
+               list_rkinds(num_rkinds) = k
+            ENDIF
+            max_decimal_prec = ik
+         ENDDO exp
+      ENDDO prec
+
+      DO k = 1, num_rkinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_rkinds(k)
+         IF(k.NE.num_rkinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+     WRITE(8,'(I0)') max_decimal_prec
+     WRITE(8,'(I0)') num_ikinds
+     WRITE(8,'(I0)') num_rkinds
+    END PROGRAM main
 
 
 _ACEOF
@@ -8552,9 +8570,8 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-
-    max_real_fortran_sizeof="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -ne 's/.*,\([0-9]*\)\}/\1/p'`"
-  max_real_fortran_kind="`echo \"$PAC_FC_ALL_REAL_KINDS\" | sed -ne 's/.*,\([0-9]*\)\}/\1/p'`"
+    max_real_fortran_sizeof="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -ne 's/.*,\([0-9]*\)}/\1/p'`"
+  max_real_fortran_kind="`echo $PAC_FC_ALL_REAL_KINDS | sed -ne 's/.*,\([0-9]*\)}/\1/p'`"
 
     if test "$ac_cv_sizeof___float128" != 0;then
     if test "$ac_cv_sizeof___float128" != "$max_real_fortran_sizeof" &&
@@ -8570,6 +8587,7 @@ $as_echo "$as_me: WARNING:
           " >&2;}
       PAC_FC_ALL_REAL_KINDS="`echo $PAC_FC_ALL_REAL_KINDS | sed -e 's/,[0-9]\+}/}/g'`"
       PAC_FC_ALL_REAL_KINDS_SIZEOF="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -e 's/,[0-9]\+}/}/g'`"
+
     fi
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran interoperable KINDS with C" >&5
@@ -9759,7 +9777,7 @@ else
 JAVA_TEST=Test.java
 CLASS_TEST=Test.class
 cat << \EOF > $JAVA_TEST
-/* #line 9762 "configure" */
+/* #line 9780 "configure" */
 public class Test {
 }
 EOF
@@ -9934,7 +9952,7 @@ EOF
 if $UUDECODE Test.uue; then
         ac_cv_prog_uudecode_base64=yes
 else
-        echo "configure: 9937: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
+        echo "configure: 9955: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
         echo "configure: failed file was:" >&5
         cat Test.uue >&5
         ac_cv_prog_uudecode_base64=no
@@ -10051,7 +10069,7 @@ else
 JAVA_TEST=Test.java
 CLASS_TEST=Test.class
 cat << \EOF > $JAVA_TEST
-/* #line 10054 "configure" */
+/* #line 10072 "configure" */
 public class Test {
 }
 EOF
@@ -10086,7 +10104,7 @@ JAVA_TEST=Test.java
 CLASS_TEST=Test.class
 TEST=Test
 cat << \EOF > $JAVA_TEST
-/* [#]line 10089 "configure" */
+/* [#]line 10107 "configure" */
 public class Test {
 public static void main (String args[]) {
         System.exit (0);
@@ -10516,7 +10534,7 @@ EOF
                 if $UUDECODE Test.uue; then
                         :
                 else
-                        echo "configure: 10519: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
+                        echo "configure: 10537: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
                         echo "configure: failed file was:" >&5
                         cat Test.uue >&5
                         ac_cv_prog_uudecode_base64=no
@@ -10536,7 +10554,7 @@ EOF
 else
 
 cat << \EOF > Test.java
-/* #line 10539 "configure" */
+/* #line 10557 "configure" */
 import junit.textui.TestRunner;
 public class Test {
 
@@ -31603,7 +31621,7 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-HDF5 config.lt 1.10.0
+HDF5 config.lt 1.10.0-patch1
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -33630,7 +33648,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by HDF5 $as_me 1.10.0, which was
+This file was extended by HDF5 $as_me 1.10.0-patch1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -33696,7 +33714,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-HDF5 config.status 1.10.0
+HDF5 config.status 1.10.0-patch1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 474d0d1..3f5f79b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
 ## NOTE: Do not forget to change the version number here when we do a
 ## release!!!
 ##
-AC_INIT([HDF5], [1.10.0], [help at hdfgroup.org])
+AC_INIT([HDF5], [1.10.0-patch1], [help at hdfgroup.org])
 
 AC_CONFIG_SRCDIR([src/H5.c])
 AC_CONFIG_HEADERS([src/H5config.h])
@@ -620,10 +620,9 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
   FORTRAN_SIZEOF_LONG_DOUBLE=${ac_cv_sizeof_long_double}
   AC_DEFINE_UNQUOTED([FORTRAN_SIZEOF_LONG_DOUBLE], ["${ac_cv_sizeof_long_double}"], [Determine the size of C long double])
 
-
   dnl get the largest sizeof for REAL kinds
-  max_real_fortran_sizeof="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -ne 's/.*,\([[0-9]]*\)\}/\1/p'`"
-  max_real_fortran_kind="`echo \"[$]PAC_FC_ALL_REAL_KINDS\" | sed -ne 's/.*,\([[0-9]]*\)\}/\1/p'`"
+  max_real_fortran_sizeof="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -ne 's/.*,\([[0-9]]*\)}/\1/p'`"
+  max_real_fortran_kind="`echo $PAC_FC_ALL_REAL_KINDS | sed -ne 's/.*,\([[0-9]]*\)}/\1/p'`"
 
   dnl remove the invalid kind from the list
   if test "$ac_cv_sizeof___float128" != 0;then
@@ -639,6 +638,7 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
           ])
       PAC_FC_ALL_REAL_KINDS="`echo $PAC_FC_ALL_REAL_KINDS | sed -e 's/,[[0-9]]\+}/}/g'`"
       PAC_FC_ALL_REAL_KINDS_SIZEOF="`echo $PAC_FC_ALL_REAL_KINDS_SIZEOF | sed -e 's/,[[0-9]]\+}/}/g'`"
+
     fi
   fi
   AC_MSG_CHECKING([for Fortran interoperable KINDS with C])
diff --git a/examples/CMakeTests.cmake b/examples/CMakeTests.cmake
index 2cf82b8..4a4728e 100644
--- a/examples/CMakeTests.cmake
+++ b/examples/CMakeTests.cmake
@@ -47,6 +47,7 @@
           red/prefix_target.h5
           u2w/u2w_target.h5
           vds.h5
+          vds-exc.h5
           vds-excalibur.h5
           vds-exclim.h5
           vds-percival.h5
@@ -106,6 +107,19 @@
             soft_link.h5
             subset.h5
             unix2win.h5
+            vds.h5
+            vds-exc.h5
+            vds-excalibur.h5
+            vds-exclim.h5
+            vds-percival.h5
+            vds-percival-unlim.h5
+            vds-percival-unlim-maxmin.h5
+            a.h5
+            b.h5
+            c.h5
+            d.h5
+            vds-simpleIO.h5
+            vds-eiger.h5
             blue/prefix_target.h5
             red/prefix_target.h5
             u2w/u2w_target.h5
diff --git a/fortran/examples/CMakeTests.cmake b/fortran/examples/CMakeTests.cmake
index 63e75c2..34230c8 100644
--- a/fortran/examples/CMakeTests.cmake
+++ b/fortran/examples/CMakeTests.cmake
@@ -23,6 +23,8 @@
           mount2.h5
           sdsf.h5
           subset.h5
+          SDScompound.h5
+          test.h5
   )
   if (NOT "${last_test}" STREQUAL "")
     set_tests_properties (f90_ex-clear-objects PROPERTIES DEPENDS ${last_test})
@@ -46,6 +48,8 @@
             mount2.h5
             sdsf.h5
             subset.h5
+            SDScompound.h5
+            test.h5
     )
     if (NOT "${last_test}" STREQUAL "")
       set_tests_properties (f90_ex-shared-clear-objects PROPERTIES DEPENDS ${last_test})
diff --git a/fortran/src/H5_buildiface.F90 b/fortran/src/H5_buildiface.F90
index bd6ecc3..4b00d80 100644
--- a/fortran/src/H5_buildiface.F90
+++ b/fortran/src/H5_buildiface.F90
@@ -397,7 +397,7 @@ PROGRAM H5_buildiface
         WRITE(11,'(A)') '    INTEGER(HID_T)    , INTENT(IN) :: attr_id'
         WRITE(11,'(A)') '    INTEGER(HID_T)    , INTENT(IN) :: memtype_id'
         WRITE(11,'(A)') '    INTEGER(HSIZE_T)  , INTENT(IN), DIMENSION(*) :: dims'
-        WRITE(11,'(A)') '    INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(INOUT)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
+        WRITE(11,'(A)') '    INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(IN)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
         WRITE(11,'(A)') '    INTEGER           , INTENT(OUT) :: hdferr'
         WRITE(11,'(A)') '    TYPE(C_PTR) :: f_ptr'
         
diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90
index eb7f99f..af0a000 100644
--- a/fortran/src/H5f90global.F90
+++ b/fortran/src/H5f90global.F90
@@ -984,17 +984,17 @@ CONTAINS
     CHARACTER(LEN=*), INTENT(OUT) :: f_string
     INTEGER(SIZE_T) :: c_len, f_len
 
-    ! Find the length of the C string by located the null terminator
-    c_len = MAX(INDEX(c_string,C_NULL_CHAR, KIND=SIZE_T)-1,1)
+    ! Find the length of the C string by locating the null terminator
+    c_len = MAX(INDEX(c_string,C_NULL_CHAR, KIND=SIZE_T)-1_SIZE_T,1_SIZE_T)
     ! Find the length of the Fortran string
     f_len = LEN(f_string)
 
-    ! CASE (1): C string is equal to or larger then Fortran character buffer,
+    ! CASE (1): C string is equal to or larger than Fortran character buffer,
     !           so fill the entire Fortran buffer. 
     IF(c_len.GE.f_len)THEN !
        f_string(1:f_len) = c_string(1:f_len)
 
-    ! CASE (2): C string is smaller then Fortran character buffer, 
+    ! CASE (2): C string is smaller than Fortran character buffer, 
     !           so copy C string and blank pad remaining characters.
     ELSE
        f_string(1:c_len) = c_string(1:c_len)
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index a4d2f9d..1fe40e3 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -774,13 +774,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -795,7 +795,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 AM_FCLIBS = $(LIBHDF5)
 
diff --git a/fortran/test/CMakeTests.cmake b/fortran/test/CMakeTests.cmake
index 154e70c..e91e820 100644
--- a/fortran/test/CMakeTests.cmake
+++ b/fortran/test/CMakeTests.cmake
@@ -4,9 +4,57 @@
 ###           T E S T I N G                                                ###
 ##############################################################################
 ##############################################################################
+if (BUILD_SHARED_LIBS)
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/fshared")
+endif (BUILD_SHARED_LIBS)
+
+# Remove any output file left over from previous test run
+add_test (
+    NAME FORTRAN_testhdf5-clear-objects
+    COMMAND    ${CMAKE_COMMAND}
+        -E remove
+        a.h5
+        b.h5
+        c.h5
+        d.h5
+        dsetf_F03.h5
+        enum1.h5
+        extern_1a.raw
+        extern_2a.raw
+        extern_3a.raw
+        extern_4a.raw
+        extren_raw.raw
+        get_info.h5
+        nbit.h5
+        t_array_F03.h5
+        t_bit_F03.h5
+        t_controlchar_F03.h5
+        t_enum_F03.h5
+        t_objref_F03.h5
+        t_opaque_F03.h5
+        t_regref_F03.h5
+        t_string_F03.h5
+        t_vlen_F03.h5
+        t_vlstring_F03.h5
+        t_vlstringrw_F03.h5
+        tarray1.h5
+        tarray2.h5
+        tarray3.h5
+        test_create.h5
+        tget_file_image.h5
+        th5o_ref.h5
+        titerate.h5
+        vds.h5
+        visit.h5
+)
+if (NOT "${last_test}" STREQUAL "")
+  set_tests_properties (FORTRAN_testhdf5-clear-objects PROPERTIES DEPENDS ${last_test})
+endif (NOT "${last_test}" STREQUAL "")
+set (last_test "FORTRAN_testhdf5-clear-objects")
 
 add_test (NAME FORTRAN_testhdf5_fortran COMMAND $<TARGET_FILE:testhdf5_fortran>)
 set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
+set_tests_properties (FORTRAN_testhdf5_fortran PROPERTIES DEPENDS FORTRAN_testhdf5-clear-objects)
 
 #-- Adding test for testhdf5_fortran_1_8
 add_test (NAME FORTRAN_testhdf5_fortran_1_8 COMMAND $<TARGET_FILE:testhdf5_fortran_1_8>)
@@ -22,15 +70,58 @@ endif (HDF5_ENABLE_F2003)
 
 #-- Adding test for fflush1
 add_test (NAME FORTRAN_fflush1 COMMAND $<TARGET_FILE:fflush1>)
+set_tests_properties (FORTRAN_fflush1 PROPERTIES DEPENDS FORTRAN_testhdf5-clear-objects)
 
 #-- Adding test for fflush2
 add_test (NAME FORTRAN_fflush2 COMMAND $<TARGET_FILE:fflush2>)
 set_tests_properties (FORTRAN_fflush2 PROPERTIES DEPENDS FORTRAN_fflush1)
 
 if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
+  add_test (
+    NAME FORTRAN_testhdf5-shared-clear-objects
+    COMMAND    ${CMAKE_COMMAND}
+        -E remove
+        a.h5
+        b.h5
+        c.h5
+        d.h5
+        dsetf_F03.h5
+        enum1.h5
+        extern_1a.raw
+        extern_2a.raw
+        extern_3a.raw
+        extern_4a.raw
+        extren_raw.raw
+        get_info.h5
+        nbit.h5
+        t_array_F03.h5
+        t_bit_F03.h5
+        t_controlchar_F03.h5
+        t_enum_F03.h5
+        t_objref_F03.h5
+        t_opaque_F03.h5
+        t_regref_F03.h5
+        t_string_F03.h5
+        t_vlen_F03.h5
+        t_vlstring_F03.h5
+        t_vlstringrw_F03.h5
+        tarray1.h5
+        tarray2.h5
+        tarray3.h5
+        test_create.h5
+        tget_file_image.h5
+        th5o_ref.h5
+        titerate.h5
+        vds.h5
+        visit.h5
+        WORKING_DIRECTORY
+            ${PROJECT_BINARY_DIR}/fshared
+  )
+  set_tests_properties (FORTRAN_testhdf5-shared-clear-objects PROPERTIES DEPENDS FORTRAN_testhdf5-clear-objects)
+
   add_test (NAME FORTRAN_testhdf5_fortran-shared COMMAND $<TARGET_FILE:testhdf5_fortran-shared>)
   set_tests_properties (FORTRAN_testhdf5_fortran-shared PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
-  set_tests_properties (FORTRAN_testhdf5_fortran-shared PROPERTIES DEPENDS FORTRAN_testhdf5_fortran)
+  set_tests_properties (FORTRAN_testhdf5_fortran-shared PROPERTIES DEPENDS "FORTRAN_testhdf5_fortran;FORTRAN_testhdf5-shared-clear-objects")
 
   #-- Adding test for testhdf5_fortran_1_8
   add_test (NAME FORTRAN_testhdf5_fortran_1_8-shared COMMAND $<TARGET_FILE:testhdf5_fortran_1_8-shared>)
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 90694e2..e5d733a 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -736,13 +736,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -757,7 +757,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # This is our main target
diff --git a/hl/fortran/examples/CMakeTests.cmake b/hl/fortran/examples/CMakeTests.cmake
index 954a01b..2c10295 100644
--- a/hl/fortran/examples/CMakeTests.cmake
+++ b/hl/fortran/examples/CMakeTests.cmake
@@ -5,6 +5,17 @@
 ##############################################################################
 ##############################################################################
 
+# Remove any output file left over from previous test run
+add_test (
+    NAME HL_FORTRAN_f90_ex-clear-objects
+    COMMAND    ${CMAKE_COMMAND}
+        -E remove
+        ex_ds1.h5
+        exlite.h5
+)
+
+
 foreach (example ${examples})
   add_test (NAME HL_FORTRAN_f90_ex_${example} COMMAND $<TARGET_FILE:hl_f90_ex_${example}>)
+  set_tests_properties (HL_FORTRAN_f90_ex_${example} PROPERTIES DEPENDS HL_FORTRAN_f90_ex-clear-objects)
 endforeach (example ${examples})
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index f1f9555..6294ae8 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -764,13 +764,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -785,7 +785,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # Our main target, the high-level fortran library
diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt
index a86bf4f..872e42d 100644
--- a/hl/src/CMakeLists.txt
+++ b/hl/src/CMakeLists.txt
@@ -13,6 +13,7 @@ set (HL_SRCS
     ${HDF5_HL_SRC_SOURCE_DIR}/H5LTparse.c
     ${HDF5_HL_SRC_SOURCE_DIR}/H5PT.c
     ${HDF5_HL_SRC_SOURCE_DIR}/H5TB.c
+    ${HDF5_HL_SRC_SOURCE_DIR}/H5LD.c
 )
 
 set (HL_HEADERS
@@ -24,6 +25,7 @@ set (HL_HEADERS
     ${HDF5_HL_SRC_SOURCE_DIR}/H5LTpublic.h
     ${HDF5_HL_SRC_SOURCE_DIR}/H5PTpublic.h
     ${HDF5_HL_SRC_SOURCE_DIR}/H5TBpublic.h
+    ${HDF5_HL_SRC_SOURCE_DIR}/H5LDpublic.h
     ${HDF5_HL_SRC_SOURCE_DIR}/hdf5_hl.h
 )
 
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index c5d4642..0907d3f 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -735,13 +735,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -756,7 +756,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # This library is our main target.
diff --git a/hl/test/CMakeLists.txt b/hl/test/CMakeLists.txt
index bf598c4..42a175f 100644
--- a/hl/test/CMakeLists.txt
+++ b/hl/test/CMakeLists.txt
@@ -26,8 +26,8 @@ MACRO (HL_ADD_EXE hl_name)
   TARGET_C_PROPERTIES (hl_${hl_name} STATIC " " " ")
   target_link_libraries (hl_${hl_name}
       ${HDF5_HL_LIB_TARGET}
-      ${HDF5_LIB_TARGET}
       ${HDF5_TEST_LIB_TARGET}
+      ${HDF5_LIB_TARGET}
   )
   set_target_properties (hl_${hl_name} PROPERTIES FOLDER test/hl)
 ENDMACRO (HL_ADD_EXE)
@@ -38,17 +38,20 @@ MACRO (HL_ADD_SHEXE hl_name)
   TARGET_C_PROPERTIES (hl_${hl_name} SHARED " " " ")
   target_link_libraries (hl_${hl_name}
       ${HDF5_HL_LIBSH_TARGET}
-      ${HDF5_LIBSH_TARGET}
       ${HDF5_TEST_LIBSH_TARGET}
+      ${HDF5_LIBSH_TARGET}
   )
   set_target_properties (hl_${hl_name} PROPERTIES FOLDER test/hl)
 ENDMACRO (HL_ADD_SHEXE)
 
-HL_ADD_EXE (test_ds)
-HL_ADD_EXE (test_dset_opt)
-HL_ADD_EXE (test_image)
 HL_ADD_EXE (test_lite)
+HL_ADD_EXE (test_image)
+HL_ADD_EXE (test_file_image)
 HL_ADD_EXE (test_table)
+HL_ADD_EXE (test_ds)
+HL_ADD_EXE (test_dset_opt)
+HL_ADD_EXE (test_ld)
+HL_ADD_EXE (test_dset_append)
 
 # test_packet has two source files
 add_executable (hl_test_packet test_packet.c test_packet_vlen.c)
@@ -56,8 +59,8 @@ TARGET_NAMING (hl_test_packet STATIC)
 TARGET_C_PROPERTIES (hl_test_packet STATIC " " " ")
 target_link_libraries (hl_test_packet
     ${HDF5_HL_LIB_TARGET}
-    ${HDF5_LIB_TARGET}
     ${HDF5_TEST_LIB_TARGET}
+    ${HDF5_LIB_TARGET}
 )
 set_target_properties (hl_test_packet PROPERTIES FOLDER test/hl)
 
@@ -71,10 +74,20 @@ if (HDF5_BUILD_GENERATORS)
   TARGET_C_PROPERTIES (hl_gen_test_ds STATIC " " " ")
   target_link_libraries (hl_gen_test_ds
       ${HDF5_HL_LIB_TARGET}
-      ${HDF5_LIB_TARGET}
       ${HDF5_TEST_LIB_TARGET}
+      ${HDF5_LIB_TARGET}
   )
   set_target_properties (hl_gen_test_ds PROPERTIES FOLDER test/hl/gen)
+
+  add_executable (hl_gen_test_ld gen_test_ld.c)
+  TARGET_NAMING (hl_gen_test_ld STATIC)
+  TARGET_C_PROPERTIES (hl_gen_test_ld STATIC " " " ")
+  target_link_libraries (hl_gen_test_ld
+      ${HDF5_HL_LIB_TARGET}
+      ${HDF5_TEST_LIB_TARGET}
+      ${HDF5_LIB_TARGET}
+  )
+  set_target_properties (hl_gen_test_ld PROPERTIES FOLDER test/hl/gen)
 endif (HDF5_BUILD_GENERATORS)
 
 include (CMakeTests.cmake)
diff --git a/hl/test/CMakeTests.cmake b/hl/test/CMakeTests.cmake
index 7d632cc..95eca4b 100644
--- a/hl/test/CMakeTests.cmake
+++ b/hl/test/CMakeTests.cmake
@@ -11,7 +11,10 @@
 MACRO (HL_ADD_TEST hl_name files)
   add_test (NAME HL_${hl_name} COMMAND $<TARGET_FILE:hl_${hl_name}>)
   if (NOT "${last_test}" STREQUAL "")
-    set_tests_properties (HL_${hl_name} PROPERTIES DEPENDS ${last_test})
+    set_tests_properties (HL_${hl_name} PROPERTIES DEPENDS ${last_test}
+      ENVIRONMENT "srcdir=${HDF5_HL_TEST_BINARY_DIR}"
+      WORKING_DIRECTORY ${HDF5_HL_TEST_BINARY_DIR}
+    )
   endif (NOT "${last_test}" STREQUAL "")
 
   # --------------------------------------------------------------------
@@ -34,9 +37,12 @@ ENDMACRO (HL_ADD_TEST)
 add_test (
     NAME HL_test-clear-objects
     COMMAND    ${CMAKE_COMMAND}
-        -E remove 
+        -E remove
         combine_tables1.h5
         combine_tables2.h5
+        file_img1.h5
+        file_img2.h5
+        test_append.h5
         test_detach.h5
         test_ds1.h5
         test_ds2.h5
@@ -58,6 +64,8 @@ add_test (
         test_lite4.h5
         test_packet_compress.h5
         test_packet_table.h5
+        test_packet_table_vlen.h5
+        testfl_packet_table_vlen.h5
         test_table.h5
 )
 if (NOT "${last_test}" STREQUAL "")
@@ -65,9 +73,13 @@ if (NOT "${last_test}" STREQUAL "")
 endif (NOT "${last_test}" STREQUAL "")
 set (last_test "HL_test-clear-objects")
 
-HL_add_test (test_ds "dsdata.txt;dslat.txt;dslon.txt;test_ds_be.h5;test_ds_le.h5")
-HL_add_test (test_dset_opt "")
-HL_add_test (test_image "image8.txt;sepia.pal;earth.pal;image24pixel.txt;image24plane.txt;usa.wri")
 HL_add_test (test_lite "dtype_file.txt")
-HL_add_test (test_packet "")
+HL_add_test (test_image "image8.txt;sepia.pal;earth.pal;image24pixel.txt;image24plane.txt;usa.wri")
+HL_add_test (test_file_image "")
 HL_add_test (test_table "test_table_be.h5;test_table_cray.h5;test_table_le.h5")
+HL_add_test (test_ds "dsdata.txt;dslat.txt;dslon.txt;test_ds_be.h5;test_ds_le.h5")
+HL_add_test (test_packet "")
+HL_add_test (test_dset_opt "")
+HL_add_test (test_ld "test_ld.h5")
+HL_add_test (test_dset_append "")
+
diff --git a/hl/test/dectris_hl_perf.c b/hl/test/dectris_hl_perf.c
index d62926a..008bd92 100644
--- a/hl/test/dectris_hl_perf.c
+++ b/hl/test/dectris_hl_perf.c
@@ -19,17 +19,39 @@
  */
 
 #include "hdf5_hl.h"
+
+#ifdef H5_HAVE_FILTER_DEFLATE
 #include <zlib.h>
+
+#if !defined(WIN32) && !defined(__MINGW32__)
+
 #include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
- 
+
+#ifdef H5_STDC_HEADERS
+#   include <errno.h>
+#   include <fcntl.h>
+#   include <stdio.h>
+#   include <stdlib.h>
+#endif
+
+#ifdef H5_HAVE_UNISTD_H
+#   include <sys/types.h>
+#   include <unistd.h>
+#endif
+
+#ifdef H5_HAVE_SYS_STAT_H
+#   include <sys/stat.h>
+#endif
+
+#if defined(H5_TIME_WITH_SYS_TIME)
+#   include <sys/time.h>
+#   include <time.h>
+#elif defined(H5_HAVE_SYS_TIME_H)
+#   include <sys/time.h>
+#else
+#   include <time.h>
+#endif
+
 const char *FILENAME[] = {
     "dectris_perf",
     "unix.raw",
@@ -640,3 +662,32 @@ main (void)
 /*    h5_cleanup(FILENAME, fapl);*/
     return 0;
 }
+
+#else /* WIN32 / MINGW32 */
+
+int
+main(void)
+{
+    printf("Non-POSIX platform. Exiting.\n");
+    return EXIT_FAILURE;
+} /* end main() */
+
+#endif /* WIN32 / MINGW32 */
+
+#else  /* !H5_HAVE_FILTER_DEFLATE */
+
+/*
+ * Function:    main
+ * Purpose:     Dummy main() function for if HDF5 was configured without
+ *              zlib stuff.
+ * Return:      EXIT_SUCCESS
+ */
+int
+main(void)
+{
+    HDfprintf(stdout, "No compression IO performance because zlib was not configured\n");
+    return EXIT_SUCCESS;
+}
+
+#endif  /* !H5_HAVE_FILTER_DEFLATE */
+
diff --git a/hl/tools/CMakeLists.txt b/hl/tools/CMakeLists.txt
index 73d1f22..8384b59 100644
--- a/hl/tools/CMakeLists.txt
+++ b/hl/tools/CMakeLists.txt
@@ -1,64 +1,6 @@
 cmake_minimum_required (VERSION 3.1.0)
-PROJECT (HDF5_HL_TOOLS)
+PROJECT (HDF5_HL_TOOLS C CXX)
 
-#-----------------------------------------------------------------------------
-# Define Sources
-#-----------------------------------------------------------------------------
-set (GIF2H5_SRCS
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif.h
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/decompress.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif2hdf.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif2mem.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gifread.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/writehdf.c
-)
+add_subdirectory (${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5 ${HDF5_HL_TOOLS_BINARY_DIR}/gif2h5)
 
-#-- Add gif2hdf5 program
-INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
-INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5)
-
-add_executable (gif2h5 ${GIF2H5_SRCS})
-TARGET_NAMING (gif2h5 STATIC)
-TARGET_C_PROPERTIES (gif2h5 STATIC " " " ")
-target_link_libraries (gif2h5 ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-set_target_properties (gif2h5 PROPERTIES FOLDER tools/hl)
-
-#-- Add h52gif program
-set (hdf2gif_SRCS
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdf2gif.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdfgifwr.c
-)
-add_executable (h52gif ${hdf2gif_SRCS})
-TARGET_NAMING (h52gif STATIC)
-TARGET_C_PROPERTIES (h52gif STATIC " " " ")
-target_link_libraries (h52gif ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
-set_target_properties (h52gif PROPERTIES FOLDER tools/hl)
-
-if (BUILD_TESTING)
-  # --------------------------------------------------------------------
-  # This executable can generate the actual test files - Currently not
-  #  used in the CMake Build system as we rely on the test files that are
-  #  shipped with HDF5 source archives
-  # --------------------------------------------------------------------
-  if (HDF5_BUILD_GENERATORS)
-      add_executable (hl_h52gifgentest ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/h52gifgentst.c)
-      TARGET_NAMING (hl_h52gifgentest STATIC)
-      TARGET_C_PROPERTIES (hl_h52gifgentest STATIC " " " ")
-      target_link_libraries (hl_h52gifgentest ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
-      set_target_properties (hl_h52gifgentest PROPERTIES FOLDER generator/tools/hl)
-    
-#      add_test (NAME hl_h52gifgentest COMMAND $<TARGET_FILE:hl_h52gifgentest>)
-  endif (HDF5_BUILD_GENERATORS)
-
-  include (CMakeTests.cmake)
-endif (BUILD_TESTING)
-
-#-----------------------------------------------------------------------------
-# Add file(s) to CMake Install
-#-----------------------------------------------------------------------------
-install (
-    TARGETS
-        gif2h5
-        h52gif
-    RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hltoolsapplications
-)
+add_subdirectory (${HDF5_HL_TOOLS_SOURCE_DIR}/h5watch ${HDF5_HL_TOOLS_BINARY_DIR}/h5watch)
diff --git a/hl/tools/CMakeLists.txt b/hl/tools/gif2h5/CMakeLists.txt
similarity index 71%
copy from hl/tools/CMakeLists.txt
copy to hl/tools/gif2h5/CMakeLists.txt
index 73d1f22..3a55501 100644
--- a/hl/tools/CMakeLists.txt
+++ b/hl/tools/gif2h5/CMakeLists.txt
@@ -1,34 +1,34 @@
 cmake_minimum_required (VERSION 3.1.0)
-PROJECT (HDF5_HL_TOOLS)
+PROJECT (HDF5_HL_TOOLS_GIF2H5)
 
 #-----------------------------------------------------------------------------
 # Define Sources
 #-----------------------------------------------------------------------------
-set (GIF2H5_SRCS
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif.h
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/decompress.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif2hdf.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gif2mem.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/gifread.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/writehdf.c
+set (GIF2H5_SOURCES
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/gif.h
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/decompress.c
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/gif2hdf.c
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/gif2mem.c
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/gifread.c
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/writehdf.c
 )
 
 #-- Add gif2hdf5 program
-INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
-INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5)
+INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib)
+INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR})
 
-add_executable (gif2h5 ${GIF2H5_SRCS})
+add_executable (gif2h5 ${GIF2H5_SOURCES})
 TARGET_NAMING (gif2h5 STATIC)
 TARGET_C_PROPERTIES (gif2h5 STATIC " " " ")
 target_link_libraries (gif2h5 ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
 set_target_properties (gif2h5 PROPERTIES FOLDER tools/hl)
 
 #-- Add h52gif program
-set (hdf2gif_SRCS
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdf2gif.c
-    ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/hdfgifwr.c
+set (hdf2gif_SOURCES
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/hdf2gif.c
+    ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/hdfgifwr.c
 )
-add_executable (h52gif ${hdf2gif_SRCS})
+add_executable (h52gif ${hdf2gif_SOURCES})
 TARGET_NAMING (h52gif STATIC)
 TARGET_C_PROPERTIES (h52gif STATIC " " " ")
 target_link_libraries (h52gif ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
@@ -41,12 +41,12 @@ if (BUILD_TESTING)
   #  shipped with HDF5 source archives
   # --------------------------------------------------------------------
   if (HDF5_BUILD_GENERATORS)
-      add_executable (hl_h52gifgentest ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/h52gifgentst.c)
+      add_executable (hl_h52gifgentest ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/h52gifgentst.c)
       TARGET_NAMING (hl_h52gifgentest STATIC)
       TARGET_C_PROPERTIES (hl_h52gifgentest STATIC " " " ")
       target_link_libraries (hl_h52gifgentest ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
       set_target_properties (hl_h52gifgentest PROPERTIES FOLDER generator/tools/hl)
-    
+
 #      add_test (NAME hl_h52gifgentest COMMAND $<TARGET_FILE:hl_h52gifgentest>)
   endif (HDF5_BUILD_GENERATORS)
 
diff --git a/hl/tools/CMakeTests.cmake b/hl/tools/gif2h5/CMakeTests.cmake
similarity index 81%
rename from hl/tools/CMakeTests.cmake
rename to hl/tools/gif2h5/CMakeTests.cmake
index 4ebd7a2..832d2df 100644
--- a/hl/tools/CMakeTests.cmake
+++ b/hl/tools/gif2h5/CMakeTests.cmake
@@ -16,28 +16,28 @@ add_custom_command (
     TARGET     gif2h5
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
-    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/testfiles/image1.gif ${PROJECT_BINARY_DIR}/testfiles/image1.gif
+    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/testfiles/image1.gif ${PROJECT_BINARY_DIR}/testfiles/image1.gif
 )
 
 add_custom_command (
     TARGET     h52gif
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
-    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/testfiles/h52giftst.h5 ${PROJECT_BINARY_DIR}/testfiles/h52giftst.h5
+    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/testfiles/h52giftst.h5 ${PROJECT_BINARY_DIR}/testfiles/h52giftst.h5
 )
 
 add_custom_command (
     TARGET     h52gif
     POST_BUILD
     COMMAND    ${CMAKE_COMMAND}
-    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_SOURCE_DIR}/gif2h5/testfiles/ex_image2.h5 ${PROJECT_BINARY_DIR}/testfiles/ex_image2.h5
+    ARGS       -E copy_if_different ${HDF5_HL_TOOLS_GIF2H5_SOURCE_DIR}/testfiles/ex_image2.h5 ${PROJECT_BINARY_DIR}/testfiles/ex_image2.h5
 )
 
 # Remove any output file left over from previous test run
 add_test (
     NAME HL_TOOLS-clear-objects
     COMMAND    ${CMAKE_COMMAND}
-        -E remove 
+        -E remove
         image1.gif
         image1.h5
         image.gif
diff --git a/hl/tools/h5watch/CMakeLists.txt b/hl/tools/h5watch/CMakeLists.txt
new file mode 100644
index 0000000..e3a7e9d
--- /dev/null
+++ b/hl/tools/h5watch/CMakeLists.txt
@@ -0,0 +1,59 @@
+cmake_minimum_required (VERSION 3.1.0)
+PROJECT (HDF5_HL_TOOLS_H5WATCH)
+
+#-----------------------------------------------------------------------------
+# Define Sources
+#-----------------------------------------------------------------------------
+set (H5WATCH_SOURCES
+    ${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR}/h5watch
+)
+
+#-- Add h5watch program
+INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib)
+INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_DIR}/src)
+INCLUDE_DIRECTORIES (${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR})
+
+add_executable (h5watch ${H5WATCH_SOURCES})
+TARGET_NAMING (h5watch STATIC)
+TARGET_C_PROPERTIES (h5watch STATIC " " " ")
+target_link_libraries (h5watch ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+set_target_properties (h5watch PROPERTIES FOLDER tools/hl)
+
+if (BUILD_TESTING)
+  #-- Add swmr_check_compat_vfd program
+  set (hl_swmr_check_compat_vfd_SOURCES
+      ${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR}/swmr_check_compat_vfd.c
+  )
+  add_executable (hl_swmr_check_compat_vfd ${hl_swmr_check_compat_vfd_SOURCES})
+  TARGET_NAMING (hl_swmr_check_compat_vfd STATIC)
+  TARGET_C_PROPERTIES (hl_swmr_check_compat_vfd STATIC " " " ")
+  target_link_libraries (hl_swmr_check_compat_vfd ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (hl_swmr_check_compat_vfd PROPERTIES FOLDER tools/hl)
+
+  #-- Add extend_dset program
+  set (extend_dset_SOURCES
+      ${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR}/extend_dset.c
+  )
+  add_executable (extend_dset ${extend_dset_SOURCES})
+  TARGET_NAMING (extend_dset STATIC)
+  TARGET_C_PROPERTIES (extend_dset STATIC " " " ")
+  target_link_libraries (extend_dset ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (extend_dset PROPERTIES FOLDER tools/hl)
+
+  add_executable (h5watchgentest ${HDF5_HL_TOOLS_H5WATCH_SOURCE_DIR}/h5watchgentest.c)
+  TARGET_NAMING (h5watchgentest STATIC)
+  TARGET_C_PROPERTIES (h5watchgentest STATIC " " " ")
+  target_link_libraries (h5watchgentest ${HDF5_HL_LIB_TARGET} ${HDF5_LIB_TARGET})
+  set_target_properties (h5watchgentest PROPERTIES FOLDER generator/tools/hl)
+
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
+
+#-----------------------------------------------------------------------------
+# Add file(s) to CMake Install
+#-----------------------------------------------------------------------------
+install (
+    TARGETS
+        h5watch
+    RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT hltoolsapplications
+)
diff --git a/hl/tools/h5watch/CMakeTests.cmake b/hl/tools/h5watch/CMakeTests.cmake
new file mode 100644
index 0000000..3242a72
--- /dev/null
+++ b/hl/tools/h5watch/CMakeTests.cmake
@@ -0,0 +1,191 @@
+
+##############################################################################
+##############################################################################
+###           T E S T I N G                                                ###
+##############################################################################
+##############################################################################
+
+set (H5WATCH_TEST_FILES
+    w-help1.ddl
+    w-err-cmpd1.ddl
+    w-err-cmpd2.ddl
+    w-err-cmpd3.ddl
+    w-err-cmpd4.ddl
+    w-err-cmpd5.ddl
+    w-err-dset1.ddl
+    w-err-dset2.ddl
+    w-err-dset-nomax.ddl
+    w-err-dset-none.ddl
+    w-err-file.ddl
+    w-err-poll.ddl
+    w-err-poll0.ddl
+    w-err-width.ddl
+    w-ext-cmpd.ddl
+    w-ext-cmpd-esc.ddl
+    w-ext-cmpd-esc-f1.ddl
+    w-ext-cmpd-esc-f3.ddl
+    w-ext-cmpd-esc-ff2.ddl
+    w-ext-cmpd-f1.ddl
+    w-ext-cmpd-f2.ddl
+    w-ext-cmpd-ff3.ddl
+    w-ext-cmpd-label.ddl
+    w-ext-cmpd-two.ddl
+    w-ext-cmpd-two-f1.ddl
+    w-ext-cmpd-two-f3.ddl
+    w-ext-cmpd-two-ff2.ddl
+    w-ext-early.ddl
+    w-ext-late.ddl
+    w-ext-one.ddl
+    w-ext-one-d.ddl
+    w-ext-one-simple.ddl
+    w-ext-two.ddl
+    w-ext-two-d.ddl
+    w-ext-two-width.ddl
+)
+
+# make test dir
+file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+add_custom_target(h5watch-files ALL COMMENT "Copying files needed by h5watch tests")
+
+foreach (h5watch_file ${H5WATCH_TEST_FILES})
+  set (dest "${PROJECT_BINARY_DIR}/testfiles/${h5watch_file}")
+  #message (STATUS " Copying ${h5watch_file}")
+  add_custom_command (
+      TARGET     h5watch-files
+      POST_BUILD
+      COMMAND    ${CMAKE_COMMAND}
+      ARGS       -E copy_if_different ${HDF5_HL_TOOLS_DIR}/testfiles/${h5watch_file} ${dest}
+  )
+endforeach (h5watch_file ${H5WATCH_TEST_FILES})
+
+##############################################################################
+##############################################################################
+###           T H E   T E S T S  M A C R O S                               ###
+##############################################################################
+##############################################################################
+
+  MACRO (ADD_H5_TEST resultfile resultcode)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5WATCH_ARGS-${resultfile}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove
+                  ${resultfile}.out
+                  ${resultfile}.out.err
+      )
+      set_tests_properties (H5WATCH_ARGS-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5WATCH_ARGS-${resultfile}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      set (last_test "H5WATCH_ARGS-${resultfile}-clearall-objects")
+      add_test (
+          NAME H5WATCH_ARGS-h5watch-${resultfile}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5watch>"
+              -D "TEST_ARGS:STRING=${ARGN}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+              -D "TEST_OUTPUT=${resultfile}.out"
+              -D "TEST_EXPECT=${resultcode}"
+              -D "TEST_REFERENCE=${resultfile}.ddl"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES DEPENDS H5WATCH_ARGS-${resultfile}-clear-objects)
+      set (last_test "H5WATCH_ARGS-${resultfile}")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_TEST resultfile resultcode resultoption)
+
+  MACRO (ADD_H5_WATCH resultfile resultcode)
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5WATCH-${resultfile}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove
+                  ${resultfile}.h5
+                  ${resultfile}.out
+                  ${resultfile}.out.err
+      )
+      set_tests_properties (H5WATCH-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+      add_test (
+          NAME H5WATCH-${resultfile}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5watch>"
+              -D "TEST_ARGS:STRING=${ARGN}"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+              -D "TEST_OUTPUT=${resultfile}.out"
+              -D "TEST_EXPECT=${resultcode}"
+              -D "TEST_REFERENCE=${resultfile}.txt"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5WATCH-${resultfile} PROPERTIES DEPENDS H5WATCH-${resultfile}-clear-objects)
+    endif (NOTHDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_WATCH resultfile resultcode)
+
+##############################################################################
+##############################################################################
+###           T H E   T E S T S                                            ###
+##############################################################################
+##############################################################################
+
+# Check to see if the VFD specified by the HDF5_DRIVER environment variable
+# supports SWMR.
+set (SWMR_INCOMPAT ${hl_swmr_check_compat_vfd})
+
+IF (NOT SWMR_INCOMPAT)
+# Remove any output file left over from previous test run
+  add_test (
+    NAME H5WATCH-clearall-objects
+    COMMAND    ${CMAKE_COMMAND}
+        -E remove
+        WATCH.h5
+  )
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (H5WATCH-clearall-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "H5WATCH-clearall-objects")
+
+#################################################################################################
+#                                               #
+# WATCH.h5: file with various types of datasets for testing--                   #
+#   The following datasets are chunked, H5D_ALLOC_TIME_INCR, max. dimensional setting:      #
+#       DSET_ONE: one-dimensional dataset                           #
+#       DSET_TWO: two-dimensional dataset                           #
+#       DSET_CMPD: one-dimensional dataset with compound type                   #
+#       DSET_CMPD_ESC: one-dimensional dataset with compound type & escape/separator characters #
+#       DSET_CMPD_TWO: two-dimensional dataset with compound type               #
+#                                               #
+#   The following datasets are one-dimensional, chunked, max. dimension setting:        #
+#       DSET_ALLOC_EARLY: dataset with H5D_ALLOC_TIME_EARLY                 #
+#       DSET_ALLOC_LATE: dataset H5D_ALLOC_TIME_LATE                        #
+#                                               #
+#   The following datasets are one-dimensional:                         #
+#   DSET_NONE: fixed dimension setting, contiguous, H5D_ALLOC_TIME_LATE         #
+#   DSET_NOMAX: fixed dimension setting, chunked, H5D_ALLOC_TIME_INCR           #
+#                                               #
+#################################################################################################
+# create the output files to be used.
+  add_test (NAME H5WATCH-h5watchgentest COMMAND $<TARGET_FILE:h5watchgentest>)
+  set_tests_properties (H5WATCH-h5watchgentest PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  set_tests_properties (H5WATCH-h5watchgentest PROPERTIES DEPENDS "H5WATCH-clearall-objects")
+  set (last_test "H5WATCH-h5watchgentest")
+
+# Test on --help options
+  ADD_H5_TEST(w-help1 0 --help)
+#
+# Tests on expected failures
+  ADD_H5_TEST(w-err-dset1 1 WATCH.h5)
+  ADD_H5_TEST(w-err-dset2 1 WATCH.h5/group/DSET_CMPD)
+  ADD_H5_TEST(w-err-dset-none 1 WATCH.h5/DSET_NONE)
+  ADD_H5_TEST(w-err-dset-nomax 1 WATCH.h5/DSET_NOMAX)
+  ADD_H5_TEST(w-err-file 1 ../WATCH.h5/DSET_CMPD)
+  ADD_H5_TEST(w-err-width 1 --width=-8 WATCH.h5/DSET_ONE)
+  ADD_H5_TEST(w-err-poll 1 --polling=-8 WATCH.h5/DSET_ONE)
+  ADD_H5_TEST(w-err-poll0 1 --polling=0 WATCH.h5/DSET_ONE)
+#
+# Tests on invalid field names via --fields option for a compound typed dataset: DSET_CMPD
+  ADD_H5_TEST(w-err-cmpd1 1 --fields=fieldx WATCH.h5/DSET_CMPD)
+  ADD_H5_TEST(w-err-cmpd2 1 --fields=field1,field2. WATCH.h5/DSET_CMPD)
+  ADD_H5_TEST(w-err-cmpd3 1 --fields=field1,field2, WATCH.h5/DSET_CMPD)
+  ADD_H5_TEST(w-err-cmpd4 1 --fields=field1,field2.b.k WATCH.h5/DSET_CMPD)
+  ADD_H5_TEST(w-err-cmpd5 1 --fields=field1 --fields=field2.b.k WATCH.h5/DSET_CMPD)
+#
+ENDIF (NOT SWMR_INCOMPAT)
diff --git a/hl/tools/h5watch/extend_dset.c b/hl/tools/h5watch/extend_dset.c
index 7efdd3b..67d738b 100644
--- a/hl/tools/h5watch/extend_dset.c
+++ b/hl/tools/h5watch/extend_dset.c
@@ -15,12 +15,25 @@
 
 #include "H5HLprivate2.h"
 
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <time.h>
+#ifdef H5_STDC_HEADERS
+#   include <assert.h>
+#   include <stdio.h>
+#   include <stdlib.h>
+#   include <string.h>
+#endif
+
+#ifdef H5_HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+
+#if defined(H5_TIME_WITH_SYS_TIME)
+#   include <sys/time.h>
+#   include <time.h>
+#elif defined(H5_HAVE_SYS_TIME_H)
+#   include <sys/time.h>
+#else
+#   include <time.h>
+#endif
 
 /*
  * Extending datasets in WATCH.h5 generated by h5watchgentest.c
@@ -222,7 +235,7 @@ extend_dset_two(const char *file, char *dname)
     for(i = 0; i < TWO_NTESTS; i++) {
 
 	/* sleep to emulate about 2 seconds of application operation */
-	sleep(2);
+    HDsleep(2);
 
 	/* Get current dimension sizes */ 
         if(H5LDget_dset_dims(did, cur_dims) < 0)
@@ -360,7 +373,7 @@ extend_dset_one(const char *file, char *dname)
     for(i = 0; i < ONE_NTESTS; i++) {
 
 	/* sleep to emulate about 2 seconds of application operation */
-	sleep(2);
+    HDsleep(2);
 
 	/* Get current dimension sizes */
 	if(H5LDget_dset_dims(did, cur_dims) < 0)
diff --git a/hl/tools/h5watch/h5watch.c b/hl/tools/h5watch/h5watch.c
index 1812087..ac2f6de 100644
--- a/hl/tools/h5watch/h5watch.c
+++ b/hl/tools/h5watch/h5watch.c
@@ -13,13 +13,6 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-#include <unistd.h>
-#include <float.h>
-
 #include "h5tools.h"
 #include "h5tools_dump.h"
 #include "H5LDprivate.h"
diff --git a/hl/tools/h5watch/h5watchgentest.c b/hl/tools/h5watch/h5watchgentest.c
index d70a690..e616cbf 100644
--- a/hl/tools/h5watch/h5watchgentest.c
+++ b/hl/tools/h5watch/h5watchgentest.c
@@ -15,12 +15,6 @@
 
 #include "hdf5.h"
 #include "H5HLprivate2.h"
-#include <time.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <string.h>
 
 /*
  *  WATCH.h5: file with various types of datasets for testing--                                   
@@ -336,7 +330,7 @@ main(void)
     if(H5Pclose(fapl) < 0) goto done;
     if(H5Fclose(fid) < 0) goto done;
 
-    exit(EXIT_SUCCESS);
+    HDexit(EXIT_SUCCESS);
 
 done:
     H5E_BEGIN_TRY
@@ -351,5 +345,6 @@ done:
 	H5Fclose(fid);
     H5E_END_TRY
 
-    exit(EXIT_FAILURE);
-} /* main() */
+    HDexit(EXIT_FAILURE);
+} /* end main() */
+
diff --git a/hl/tools/h5watch/testh5watch.sh.in b/hl/tools/h5watch/testh5watch.sh.in
index ff31768..89fbf95 100644
--- a/hl/tools/h5watch/testh5watch.sh.in
+++ b/hl/tools/h5watch/testh5watch.sh.in
@@ -109,9 +109,6 @@ TOOLTEST() {
     # any unexpected output from that stream too.
     TESTING $H5WATCH $@
     (
-	$ECHO "#############################"
-	$ECHO " output for '$H5WATCH $@'" 
-	$ECHO "#############################"
         $RUNSERIAL $H5WATCH_BIN "$@"
     ) > $actual 2>$actual_err
     exitcode=$?
@@ -199,7 +196,6 @@ TEST_WATCH() {
         #
         # Run h5watch; put in background; collect output to a file
         TESTING $H5WATCH $OBJ
-	head -n 3 $expect > $actual			# copy the first 3 lines from $expect (just the command line)
         $RUNSERIAL $H5WATCH_BIN $2 "$TESTFILE/$1" >> $actual &
         watch_pid=$!                                    # Get h5watch process ID
         cp /dev/null $READER_MESSAGE                    # Send message to "extend" process to start work
diff --git a/hl/tools/testfiles/w-err-cmpd1.ddl b/hl/tools/testfiles/w-err-cmpd1.ddl
index 2a3f796..775d6a0 100644
--- a/hl/tools/testfiles/w-err-cmpd1.ddl
+++ b/hl/tools/testfiles/w-err-cmpd1.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch --fields=fieldx WATCH.h5/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: error in processing <list_of_fields>
diff --git a/hl/tools/testfiles/w-err-cmpd2.ddl b/hl/tools/testfiles/w-err-cmpd2.ddl
index 4de3fe2..775d6a0 100644
--- a/hl/tools/testfiles/w-err-cmpd2.ddl
+++ b/hl/tools/testfiles/w-err-cmpd2.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch --fields=field1,field2. WATCH.h5/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: error in processing <list_of_fields>
diff --git a/hl/tools/testfiles/w-err-cmpd3.ddl b/hl/tools/testfiles/w-err-cmpd3.ddl
index f2f462e..775d6a0 100644
--- a/hl/tools/testfiles/w-err-cmpd3.ddl
+++ b/hl/tools/testfiles/w-err-cmpd3.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch --fields=field1,field2, WATCH.h5/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: error in processing <list_of_fields>
diff --git a/hl/tools/testfiles/w-err-cmpd4.ddl b/hl/tools/testfiles/w-err-cmpd4.ddl
index b11277b..775d6a0 100644
--- a/hl/tools/testfiles/w-err-cmpd4.ddl
+++ b/hl/tools/testfiles/w-err-cmpd4.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch --fields=field1,field2.b.k WATCH.h5/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: error in processing <list_of_fields>
diff --git a/hl/tools/testfiles/w-err-cmpd5.ddl b/hl/tools/testfiles/w-err-cmpd5.ddl
index 7174d14..775d6a0 100644
--- a/hl/tools/testfiles/w-err-cmpd5.ddl
+++ b/hl/tools/testfiles/w-err-cmpd5.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch --fields=field1 --fields=field2.b.k WATCH.h5/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: error in processing <list_of_fields>
diff --git a/hl/tools/testfiles/w-err-dset-nomax.ddl b/hl/tools/testfiles/w-err-dset-nomax.ddl
index c2fd65f..b99cf84 100644
--- a/hl/tools/testfiles/w-err-dset-nomax.ddl
+++ b/hl/tools/testfiles/w-err-dset-nomax.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch WATCH.h5/DSET_NOMAX'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: "/DSET_NOMAX" should have unlimited or max. dimension setting
diff --git a/hl/tools/testfiles/w-err-dset-none.ddl b/hl/tools/testfiles/w-err-dset-none.ddl
index f9165aa..cbf6770 100644
--- a/hl/tools/testfiles/w-err-dset-none.ddl
+++ b/hl/tools/testfiles/w-err-dset-none.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch WATCH.h5/DSET_NONE'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: "/DSET_NONE" should be a chunked or virtual dataset
diff --git a/hl/tools/testfiles/w-err-dset1.ddl b/hl/tools/testfiles/w-err-dset1.ddl
index 0594562..433c4d6 100644
--- a/hl/tools/testfiles/w-err-dset1.ddl
+++ b/hl/tools/testfiles/w-err-dset1.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch WATCH.h5'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: no dataset specified
diff --git a/hl/tools/testfiles/w-err-dset2.ddl b/hl/tools/testfiles/w-err-dset2.ddl
index ce26109..81b52de 100644
--- a/hl/tools/testfiles/w-err-dset2.ddl
+++ b/hl/tools/testfiles/w-err-dset2.ddl
@@ -1,5 +1,2 @@
-#############################
- output for 'h5watch WATCH.h5/group/DSET_CMPD'
-#############################
 Opened "WATCH.h5" with sec2 driver.
 h5watch error: unable to open dataset "/group/DSET_CMPD"
diff --git a/hl/tools/testfiles/w-err-file.ddl b/hl/tools/testfiles/w-err-file.ddl
index 416fd44..015661f 100644
--- a/hl/tools/testfiles/w-err-file.ddl
+++ b/hl/tools/testfiles/w-err-file.ddl
@@ -1,4 +1 @@
-#############################
- output for 'h5watch ../WATCH.h5/DSET_CMPD'
-#############################
 h5watch error: unable to open file "../WATCH.h5/DSET_CMPD"
diff --git a/hl/tools/testfiles/w-err-poll.ddl b/hl/tools/testfiles/w-err-poll.ddl
index 56c8d89..e6510f2 100644
--- a/hl/tools/testfiles/w-err-poll.ddl
+++ b/hl/tools/testfiles/w-err-poll.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --polling=-8 WATCH.h5/DSET_ONE'
-#############################
 Usage: h5watch [OPTIONS] [OBJECT]
 
      OPTIONS
diff --git a/hl/tools/testfiles/w-err-poll0.ddl b/hl/tools/testfiles/w-err-poll0.ddl
index ff6f322..e6510f2 100644
--- a/hl/tools/testfiles/w-err-poll0.ddl
+++ b/hl/tools/testfiles/w-err-poll0.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --polling=0 WATCH.h5/DSET_ONE'
-#############################
 Usage: h5watch [OPTIONS] [OBJECT]
 
      OPTIONS
diff --git a/hl/tools/testfiles/w-err-width.ddl b/hl/tools/testfiles/w-err-width.ddl
index bf405a4..e6510f2 100644
--- a/hl/tools/testfiles/w-err-width.ddl
+++ b/hl/tools/testfiles/w-err-width.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --width=-8 WATCH.h5/DSET_ONE'
-#############################
 Usage: h5watch [OPTIONS] [OBJECT]
 
      OPTIONS
diff --git a/hl/tools/testfiles/w-ext-cmpd-esc-f1.ddl b/hl/tools/testfiles/w-ext-cmpd-esc-f1.ddl
index 6e1d2b5..d85594d 100644
--- a/hl/tools/testfiles/w-ext-cmpd-esc-f1.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-esc-f1.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field\,1,field2\. TEST.h5/DSET_CMPD_ESC'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_ESC...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-esc-f3.ddl b/hl/tools/testfiles/w-ext-cmpd-esc-f3.ddl
index 7623f3f..ab6c294 100644
--- a/hl/tools/testfiles/w-ext-cmpd-esc-f3.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-esc-f3.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2\..\,b.a,field2\..\\K TEST.h5/DSET_CMPD_ESC'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_ESC...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-esc-ff2.ddl b/hl/tools/testfiles/w-ext-cmpd-esc-ff2.ddl
index db331f0..039cbf3 100644
--- a/hl/tools/testfiles/w-ext-cmpd-esc-ff2.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-esc-ff2.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2\..\,b --fields=field4\, TEST.h5/DSET_CMPD_ESC'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_ESC...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-esc.ddl b/hl/tools/testfiles/w-ext-cmpd-esc.ddl
index 66eb48c..900b3f2 100644
--- a/hl/tools/testfiles/w-ext-cmpd-esc.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-esc.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_CMPD_ESC'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_ESC...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-f1.ddl b/hl/tools/testfiles/w-ext-cmpd-f1.ddl
index a722f68..7e0a066 100644
--- a/hl/tools/testfiles/w-ext-cmpd-f1.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-f1.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field1,field2 TEST.h5/DSET_CMPD'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-f2.ddl b/hl/tools/testfiles/w-ext-cmpd-f2.ddl
index b6561c5..ea69222 100644
--- a/hl/tools/testfiles/w-ext-cmpd-f2.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-f2.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2.b,field4 TEST.h5/DSET_CMPD'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-ff3.ddl b/hl/tools/testfiles/w-ext-cmpd-ff3.ddl
index c3d22f5..84e2919 100644
--- a/hl/tools/testfiles/w-ext-cmpd-ff3.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-ff3.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2.b.a --fields=field2.c TEST.h5/DSET_CMPD'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-label.ddl b/hl/tools/testfiles/w-ext-cmpd-label.ddl
index 63ac47e..84534ea 100644
--- a/hl/tools/testfiles/w-ext-cmpd-label.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-label.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --label TEST.h5/DSET_CMPD'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-two-f1.ddl b/hl/tools/testfiles/w-ext-cmpd-two-f1.ddl
index a49f9f1..49abde9 100644
--- a/hl/tools/testfiles/w-ext-cmpd-two-f1.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-two-f1.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field1,field2 TEST.h5/DSET_CMPD_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-two-f3.ddl b/hl/tools/testfiles/w-ext-cmpd-two-f3.ddl
index a0ab9ac..0878f35 100644
--- a/hl/tools/testfiles/w-ext-cmpd-two-f3.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-two-f3.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2.b.a,field2.c TEST.h5/DSET_CMPD_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-two-ff2.ddl b/hl/tools/testfiles/w-ext-cmpd-two-ff2.ddl
index e32a818..669547e 100644
--- a/hl/tools/testfiles/w-ext-cmpd-two-ff2.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-two-ff2.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --fields=field2.b --fields=field4 TEST.h5/DSET_CMPD_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd-two.ddl b/hl/tools/testfiles/w-ext-cmpd-two.ddl
index 90775e3..a461226 100644
--- a/hl/tools/testfiles/w-ext-cmpd-two.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd-two.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_CMPD_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-cmpd.ddl b/hl/tools/testfiles/w-ext-cmpd.ddl
index 5512d17..7e64a14 100644
--- a/hl/tools/testfiles/w-ext-cmpd.ddl
+++ b/hl/tools/testfiles/w-ext-cmpd.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_CMPD'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_CMPD...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-early.ddl b/hl/tools/testfiles/w-ext-early.ddl
index a822540..1d963d7 100644
--- a/hl/tools/testfiles/w-ext-early.ddl
+++ b/hl/tools/testfiles/w-ext-early.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_ALLOC_EARLY'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_ALLOC_EARLY...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-late.ddl b/hl/tools/testfiles/w-ext-late.ddl
index 724562f..f3a7cf2 100644
--- a/hl/tools/testfiles/w-ext-late.ddl
+++ b/hl/tools/testfiles/w-ext-late.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_ALLOC_LATE'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_ALLOC_LATE...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-one-d.ddl b/hl/tools/testfiles/w-ext-one-d.ddl
index 55d55ca..249ff95 100644
--- a/hl/tools/testfiles/w-ext-one-d.ddl
+++ b/hl/tools/testfiles/w-ext-one-d.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --dim TEST.h5/DSET_ONE'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_ONE...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-one-simple.ddl b/hl/tools/testfiles/w-ext-one-simple.ddl
index f657748..3bf0ef5 100644
--- a/hl/tools/testfiles/w-ext-one-simple.ddl
+++ b/hl/tools/testfiles/w-ext-one-simple.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --simple TEST.h5/DSET_ONE'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_ONE...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-one.ddl b/hl/tools/testfiles/w-ext-one.ddl
index b46392e..c4e75eb 100644
--- a/hl/tools/testfiles/w-ext-one.ddl
+++ b/hl/tools/testfiles/w-ext-one.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_ONE'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_ONE...
 dimension 0: 10->13 (increases)
diff --git a/hl/tools/testfiles/w-ext-two-d.ddl b/hl/tools/testfiles/w-ext-two-d.ddl
index dda09e6..b71a9a6 100644
--- a/hl/tools/testfiles/w-ext-two-d.ddl
+++ b/hl/tools/testfiles/w-ext-two-d.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --dim TEST.h5/DSET_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-two-width.ddl b/hl/tools/testfiles/w-ext-two-width.ddl
index 47e9221..52903de 100644
--- a/hl/tools/testfiles/w-ext-two-width.ddl
+++ b/hl/tools/testfiles/w-ext-two-width.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --width=30 TEST.h5/DSET_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-ext-two.ddl b/hl/tools/testfiles/w-ext-two.ddl
index a98d333..31df8d5 100644
--- a/hl/tools/testfiles/w-ext-two.ddl
+++ b/hl/tools/testfiles/w-ext-two.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch TEST.h5/DSET_TWO'
-#############################
 Opened "TEST.h5" with sec2 driver.
 Monitoring dataset /DSET_TWO...
 dimension 0: 4->6 (increases)
diff --git a/hl/tools/testfiles/w-help1.ddl b/hl/tools/testfiles/w-help1.ddl
index 8e75242..e6510f2 100644
--- a/hl/tools/testfiles/w-help1.ddl
+++ b/hl/tools/testfiles/w-help1.ddl
@@ -1,6 +1,3 @@
-#############################
- output for 'h5watch --help'
-#############################
 Usage: h5watch [OPTIONS] [OBJECT]
 
      OPTIONS
diff --git a/html/Advanced/UsingUnicode/index.html b/html/Advanced/UsingUnicode/index.html
index eccd533..62de479 100644
--- a/html/Advanced/UsingUnicode/index.html
+++ b/html/Advanced/UsingUnicode/index.html
@@ -93,13 +93,16 @@ Return to “<a href="../../Advanced.html">Advanced Topics</a>.”</p>
     error =      H5Pset_char_encoding(lcpl_id, H5T_CSET_UTF8) ;
     dataset_id = H5Dcreate2(group_id, "datos_ñ", datatype_id, dataspace_id, 
                  lcpl_id, H5P_DEFAULT, H5P_DEFAULT) ;               </pre>
-    <p>
-    If the character encoding of an object or attribute name is unknown,
-    the combination of an <code>H5A/H5D/H5G/H5Tget_create_plist</code> call
-    (that is, <code>H5Aget_create_plist</code>, <code>H5Dget_create_plist</code>,
-    etc., as appropriate)
-    and an <code>H5Pget_char_encoding</code> call will reveal that 
-    information.
+
+    <p> 
+    If the character encoding of an attribute name is unknown, the 
+    combination of an <code>H5Aget_create_plist</code> call and an 
+    <code>H5Pget_char_encoding</code> call will reveal that information. 
+    If the character encoding of an object name is unknown, the 
+    information can be accessed through the object’s 
+    <code>H5L_info_t</code> structure which can be obtained using 
+    <code>H5Lvisit</code> or <code>H5Lget_info_by_idx</code> calls.
+    </p>
 
     <h3>Character Datatypes in Datasets and Attributes</h3>
     Like object names, HDF5 character data in datasets and attributes
@@ -296,7 +299,7 @@ Return to “<a href="../../Advanced.html">Advanced Topics</a>.”</p>
 
 <SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 17 February 2014");
+document.writeln("Last modified: 11 April 2016");
 -->
 </SCRIPT>
  
diff --git a/html/H5.format.html b/html/H5.format.html
index 22b8e6a..f24d19b 100644
--- a/html/H5.format.html
+++ b/html/H5.format.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML>
 <html>
   <head>
     <title>
-      HDF5 File Format Specification Version 2.0
+      HDF5 File Format Specification Version 3.0
     </title>
 
 <style>
@@ -12,33 +11,40 @@ h1 {    display: block;
         margin-left: 0px;
         margin-right: 0px;
         text-indent: 0px;
+        font-size: 300%;
         }
 
 h2 {    display: block;
-        margin-top: 8x;
+        margin-top: 60px;
         margin-bottom: 8px;
         margin-left: 0px;
         margin-right: 0px;
         text-indent: 0px;
+        border-style: solid;
+        border-top-style: medium;
+        border-top-color: #A9A9A9;
+        border-bottom: none;
+        border-left: none;
+        border-right: none;
+        font-size: 250%;
         }
-<!-- A horizontal rule (<hr />) should be placed on the line above 
-each h2 tag. The h2 tags are used on the main sections along with 
-the hr tags. -->
 
 h3 {    display: block;
-        margin-top: 8px;
+        margin-top: 40px;
         margin-bottom: 8px;
         margin-left: 0px;
         margin-right: 0px;
         text-indent: 0px;
+        font-size: 200%;
         }
 
 h4 {    display: block;
-        margin-top: 8px;
+        margin-top: 32px;
         margin-bottom: 8px;
         margin-left: 0px;
         margin-right: 0px;
         text-indent: 0px;
+        font-size: 150%;
         }
 
 p { display: block;
@@ -47,6 +53,7 @@ p { display: block;
     margin-left: 0px;
     margin-right: 0px;
     text-indent: 0px;
+    font-size: 100%;
     }
 <!-- 
 p.item {    margin-left: 2em; 
@@ -200,7 +207,7 @@ div {   page-break-inside:avoid;
 <!-- #EndLibraryItem -->
 
 <center>
-<h1>HDF5 File Format Specification Version 2.0</h1>
+<h1>HDF5 File Format Specification Version 3.0</h1>
 </center>
 
     <center>
@@ -219,9 +226,12 @@ div {   page-break-inside:avoid;
       <li><a href="#FileMetaData">Disk Format: Level 0 - File Metadata</a></li>
         <font size="-1">
 	<ol type="A">
-	  <li><a href="#Superblock">Disk Format: Level 0A - Format Signature and Superblock</a></li>
-	  <li><a href="#DriverInfo">Disk Format: Level 0B - File Driver Info</a></li>
-	  <li><a href="#SuperblockExt">Disk Format: Level 0C - Superblock Extension</a></li>
+	  <li><a href="#Superblock">Disk Format: Level 0A - Format Signature 
+        and Superblock</a></li>
+	  <li><a href="#DriverInfo">Disk Format: Level 0B - File Driver 
+        Info</a></li>
+	  <li><a href="#SuperblockExt">Disk Format: Level 0C - Superblock 
+        Extension</a></li>
 	</ol>
         </font>
       <li><a href="#FileInfra">Disk Format: Level 1 - File Infrastructure</a></li>
@@ -231,17 +241,23 @@ div {   page-break-inside:avoid;
         Nodes</a></li>
 	    <ol type="1">
               <li><a href="#V1Btrees">Disk Format: Level 1A1 - Version 1 
-                B-trees (B-link Trees)</a></li>
+                B-trees</a></li>
               <li><a href="#V2Btrees">Disk Format: Level 1A2 - Version 2 
                 B-trees</a></li>
             </ol>
-	  <li><a href="#SymbolTable">Disk Format: Level 1B - Group Symbol Table Nodes</a></li>
-	  <li><a href="#SymbolTableEntry">Disk Format: Level 1C - Symbol Table Entry</a></li>
+	  <li><a href="#SymbolTable">Disk Format: Level 1B - Group Symbol 
+      Table Nodes</a></li>
+	  <li><a href="#SymbolTableEntry">Disk Format: Level 1C - Symbol 
+      Table Entry</a></li>
 	  <li><a href="#LocalHeap">Disk Format: Level 1D - Local Heaps</a></li>
 	  <li><a href="#GlobalHeap">Disk Format: Level 1E - Global Heap</a></li>
-	  <li><a href="#FractalHeap">Disk Format: Level 1F - Fractal Heap</a></li>
-	  <li><a href="#FreeSpaceManager">Disk Format: Level 1G - Free-space Manager</a></li>
-	  <li><a href="#SOHMTable">Disk Format: Level 1H - Shared Object Header Message Table</a></li>
+      <li><a href="#GlobalHeapVDS">Disk Format: Level 1F - Global Heap 
+      Block for Virtual Datasets</a></li>
+	  <li><a href="#FractalHeap">Disk Format: Level 1G - Fractal Heap</a></li>
+	  <li><a href="#FreeSpaceManager">Disk Format: Level 1H - Free-space 
+      Manager</a></li>
+	  <li><a href="#SOHMTable">Disk Format: Level 1I - Shared Object 
+      Header Message Table</a></li>
 	</ol>
         </font>
       <li><a href="#DataObject">Disk Format: Level 2 - Data Objects</a></li>
@@ -249,16 +265,23 @@ div {   page-break-inside:avoid;
 	<ol type="A">
 	  <li><a href="#ObjectHeader">Disk Format: Level 2A - Data Object Headers</a></li>
             <ol type="1">
-              <li><a href="#ObjectHeaderPrefix">Disk Format: Level 2A1 - Data Object Header Prefix</a></li>
+              <li><a href="#ObjectHeaderPrefix">Disk Format: Level 2A1 - 
+              Data Object Header Prefix</a></li>
                 <ol type="a">
-                  <li><a href="#V1ObjectHeaderPrefix">Version 1 Data Object Header Prefix</a></li>
-                  <li><a href="#V2ObjectHeaderPrefix">Version 2 Data Object Header Prefix</a></li>
+                  <li><a href="#V1ObjectHeaderPrefix">Version 1 Data 
+                  Object Header Prefix</a></li>
+                  <li><a href="#V2ObjectHeaderPrefix">Version 2 Data 
+                  Object Header Prefix</a></li>
                 </ol>
-              <li><a href="#ObjectHeaderMessages">Disk Format: Level 2A2 - Data Object Header Messages</a></li>
+              <li><a href="#ObjectHeaderMessages">Disk Format: Level 2A2 - 
+              Data Object Header Messages</a></li>
                 <ol type="a">
                   <li><a href="#NILMessage">The NIL Message</a></li>                                                       <!-- 0x0000 -->
                   <li><a href="#DataspaceMessage">The Dataspace Message</a></li>                                           <!-- 0x0001 -->
                   <li><a href="#LinkInfoMessage">The Link Info Message</a></li>                                     	  <!-- 0x0002 -->
+                  <li><a href="#DatatypeMessage">The Datatype Message</a></li>                                             <!-- 0x0003 -->
+                  <li><a href="#OldFillValueMessage">The Data Storage - 
+                    Fill Value (Old) Message</a></li>        <!-- 0x0004 -->
                 </ol>
             </ol>
         </ol>
@@ -278,53 +301,62 @@ div {   page-break-inside:avoid;
 	    <ol type="1" start="2">
               <li><a href="#ObjectHeaderMessages">Disk Format: Level 2A2 - 
                 Data Object Header Messages</a><i> (Continued)</i></li>
-                <ol type="a" start="4">
-                  <li><a href="#DatatypeMessage">The Datatype Message</a></li>                                             <!-- 0x0003 -->
-                  <li><a href="#OldFillValueMessage">The Data Storage - 
-                    Fill Value (Old) Message</a></li>                  <!-- 0x0004 -->
+                <ol type="a" start="6">
                   <li><a href="#FillValueMessage">The Data Storage - 
-                    Fill Value Message</a></li>                           <!-- 0x0005 -->
+                    Fill Value Message</a></li>              <!-- 0x0005 -->
                   <li><a href="#LinkMessage">The Link Message</a></li>                                             <!-- 0x0006 -->
                   <li><a href="#ExternalFileListMessage">The Data Storage - 
-                    External Data Files Message</a></li>           <!-- 0x0007 -->
-                  <li><a href="#LayoutMessage">The Data Storage - 
-                    Layout Message</a></li>                                  <!-- 0x0008 -->
+                    External Data Files Message</a></li>     <!-- 0x0007 -->
+                  <li><a href="#LayoutMessage">The Data Layout Message</a></li>                                  <!-- 0x0008 -->
                   <li><a href="#BogusMessage">The Bogus Message</a></li>                                                   <!-- 0x0009 -->
                   <li><a href="#GroupInfoMessage">The Group Info 
-                    Message</a></li>                                          <!-- 0x000a -->
+                    Message</a></li>                         <!-- 0x000a -->
                   <li><a href="#FilterMessage">The Data Storage - 
-                    Filter Pipeline Message</a></li>                         <!-- 0x000b -->
+                    Filter Pipeline Message</a></li>         <!-- 0x000b -->
                   <li><a href="#AttributeMessage">The Attribute 
-                    Message</a></li>                                           <!-- 0x000c -->
+                    Message</a></li>                         <!-- 0x000c -->
                   <li><a href="#CommentMessage">The Object Comment 
-                    Message</a></li>                                        <!-- 0x000d -->
+                    Message</a></li>                         <!-- 0x000d -->
                   <li><a href="#OldModificationTimeMessage">The Object 
-                    Modification Time (Old) Message</a></li>            <!-- 0x000e -->
+                    Modification Time (Old) Message</a></li> <!-- 0x000e -->
                   <li><a href="#SOHMTableMessage">The Shared Message 
-                    Table Message</a></li>                                <!-- 0x000f -->
+                    Table Message</a></li>                   <!-- 0x000f -->
                   <li><a href="#ContinuationMessage">The Object Header 
-                    Continuation Message</a></li>                       <!-- 0x0010 -->
+                    Continuation Message</a></li>            <!-- 0x0010 -->
                   <li><a href="#SymbolTableMessage">The Symbol 
-                    Table Message</a></li>                                      <!-- 0x0011 -->
+                    Table Message</a></li>                   <!-- 0x0011 -->
                   <li><a href="#ModificationTimeMessage">The Object 
-                    Modification Time Message</a></li>                     <!-- 0x0012 -->
+                    Modification Time Message</a></li>       <!-- 0x0012 -->
                   <li><a href="#BtreeKValuesMessage">The B-tree 
-                    ‘K’ Values Message</a></li>                    	          <!-- 0x0013 -->
+                    ‘K’ Values Message</a></li>  <!-- 0x0013 -->
                   <li><a href="#DrvInfoMessage">The Driver Info 
-                    Message</a></li>                                          <!-- 0x0014 -->
+                    Message</a></li>                         <!-- 0x0014 -->
                   <li><a href="#AinfoMessage">The Attribute Info 
-                    Message</a></li>                                         <!-- 0x0015 -->
+                    Message</a></li>                         <!-- 0x0015 -->
                   <li><a href="#RefCountMessage">The Object Reference 
-                    Count Message</a></li>                              <!-- 0x0016 -->
+                    Count Message</a></li>                   <!-- 0x0016 -->
+<!-- Will be updated for release 1.10.1
+    <p style="background-color:#ff9999">change for 1.10.1</p>
                   <li><a href="#FsinfoMessage">The File Space Info 
-                    Message</a></li>                                      <!-- 0x0018 -->
+                    Message</a></li> -->                     <!-- 0x0017 -->
                 </ol>
 	    </ol>
 	  <li><a href="#DataStorage">Disk Format: Level 2B - Data Object Data Storage</a></li>
 	</ol>
         </font>
       <li><a href="#AppendixA">Appendix A: Definitions</a></li>
-      <li><a href="#AppendixB">Appendix B: File Memory Allocation Types</a></li>
+      <li><a href="#AppendixB">Appendix B: File Memory Allocation 
+      Types</a></li>
+      <li><a href="#AppendixC">
+      Appendix C: Types of Indexes for Dataset Chunks</a></li><font size="-1">
+	<ol type="A">
+	  <li><a href="#SingleChunk">The Single Chunk Index</a></li>
+	  <li><a href="#Implicit">The Implicit Index</a></li>
+	  <li><a href="#FixedArray">The Fixed Array Index</a></li>
+	  <li><a href="#ExtensibleArray">The Extensible Array Index</a></li>
+	  <li><a href="#AppendV2Btrees">The Version 2 B-trees Index</a></li>
+	</ol>
+        </font>
     </ol>
 </td></tr>
 </table>
@@ -332,9 +364,6 @@ div {   page-break-inside:avoid;
 
 
 
-<br />
-<br />
-<hr />
 <a name="Intro"><h2>I. Introduction</h2></a>
 
     <table align="right" width="100">
@@ -390,13 +419,12 @@ div {   page-break-inside:avoid;
       object header that contains a message that points to a local 
       heap (for storing the links to objects in the group) and to a 
       B-tree (which indexes the links). A dataset is an object header 
-      that contains messages that describe datatype, dataspace, layout, 
-      filters, external files, fill value, and other elements with the 
-      layout message pointing to either a raw data chunk or to a 
-      B-tree that points to raw data chunks.</p>
+      that contains messages that describe the datatype, dataspace, 
+      layout, filters, external files, fill value, and other elements 
+      with the layout message pointing to either a raw data chunk or 
+      to a B-tree that points to raw data chunks.</p>
 
 
-<br />
 <a name="ThisDocument"><h3>I.A. This Document</h3></a>
 
     <p>This document describes the lower-level data objects;
@@ -407,20 +435,37 @@ div {   page-break-inside:avoid;
       Level 0 contains basic information for identifying and
       defining information about the file.  Level 1 information contains
       the information about the pieces of a file shared by many objects
-      in the file (such as a B-trees and heaps).  Level 2 is the rest 
-      of the file and contains all of the data objects, with each object
+      in the file (such as B-trees and heaps).  Level 2 is the rest 
+      of the file and contains all of the data objects with each object
       partitioned into header information, also known as 
       <em>metadata</em>, and data.</p>
+    
+    <p>The various components of the lower-level data objects are 
+    described in pairs of tables. The first table shows the format 
+    layout, and the second table describes the fields. The titles 
+    of format layout tables begin with “Layout”. The 
+    titles of the tables where the fields are described begin with 
+    “Fields”. For example, the table that describes the 
+    format of the <a href="#V2Btrees">version 2 B-tree header</a> has 
+    a title of “Layout: Version 2 B-tree Header”, and the 
+    fields in the version 2 B-tree header are described in the table 
+    titled “Fields: Version 2 B-tree Header”.
 
     <p>The sizes of various fields in the following layout tables are
       determined by looking at the number of columns the field spans
-      in the table.  There are three exceptions: (1) The size may be
-      overridden by specifying a size in parentheses, (2) the size of
-      addresses is determined by the <em>Size of Offsets</em> field
+      in the table.  There are exceptions: </p>
+      <ul>
+      <li> The size may be overridden by specifying a size in 
+      parentheses</li>
+      <li> The size of addresses is determined by the 
+      <em><a href="#SizeOfOffsetsV0">Size of Offsets</a></em> field 
       in the superblock and is indicated in this document with a
-      superscripted ‘O’, and (3) the size of length fields is determined
-      by the <em>Size of Lengths</em> field in the superblock and is
-      indicated in this document with a superscripted ‘L’.</p>
+      superscripted ‘O’</li>
+      <li> The size of length fields is determined by the 
+      <em><a href="#SizeOfLengthsV0">Size of Lengths</a></em> field in 
+      the superblock and is indicated in this document with a 
+      superscripted ‘L’</li>
+      </ul>
 
     <p>Values for all fields in this document should be treated as unsigned
       integers, unless otherwise noted in the description of a field.
@@ -437,28 +482,56 @@ div {   page-break-inside:avoid;
       numbered from the lowest bit position in the entry.
     </p>
 
-    <p>Various tables in this document aligned with “This space inserted
-        only to align table nicely”.  These entries in the table are just
-        to make the table presentation nicer and do not represent any values
-        or padding in the file.
+    <p>Various format tables in this document have cells with 
+    “This space inserted only to align table nicely”. These 
+    entries in the table are just to make the table presentation nicer 
+    and do not represent any values or padding in the file.
     </p>
 
+<a name="ChangesForHdf5_1_10">
+<h3>I.B. Changes for HDF5 1.10</h3></a>
 
-<br />
-<a name="ChangesForHdf5_1_10"><h3>I.B. Changes for HDF5 1.10</h3></a>
-
-    <p>As of October 2015, changes in the file format for HDF5 1.10 
-    have not yet been finalized.</p>
+    <p>The following sections have been 
+    changed or added for the 1.10 release:</p>
+    <ul>
+        <li>In the <a href="#Superblock">
+        “Disk Format: Level 0A - Format Signature and 
+        Superblock”</a> section, version 3 of the superblock was 
+        added. </li>
+        <li>In the <a href="#SuperblockExt">
+        “Disk Format: Level 0C - Superblock Extension”</a>
+        section, a link to the Data Storage message was added. </li>
+        <li>In the <a href="#V2Btrees">
+        “Disk Format: Level 1A2 - Version 2 B-trees”</a>
+        section, additional B-tree types were added. Tables that 
+        describe the <a href="#V2BtreesType10">type 10</a> and 
+        <a href="#V2BtreesType11">11</a> record layouts were added at 
+        the end of the section.</li>
+        <li>The <a href="#GlobalHeapVDS">“Disk Format: Level 1F - 
+        Global Heap Block for Virtual Datasets”</a> was added. 
+        </li>
+        <li><a href="#LayoutMessage">
+        “The Data Layout Message”</a> section was changed. 
+        The name was changed, and <a href="#DataLayoutV4">version 4</a> 
+        of the data layout message was added for the virtual type.</li>
+
+<!-- Will be updated for release 1.10.1
+        <li>In <a href="#FsinfoMessage">
+        “The File Space Info Message”</a> section, 
+        the header message type was changed.</li>
+-->
+        <li><a href="#AppendixC">
+        “Appendix C: Types of Indexes for Dataset Chunks”</a> 
+        was added. Five indexing types were added.</li>
+    </ul>
 
 
 
-<br />
-<br />
-<hr />
 <h2><a name="FileMetaData">
 II. Disk Format: Level 0 - File Metadata</a></h2>
 
-<br />
+
+
 <h3><a name="Superblock">
 II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 
@@ -479,21 +552,31 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
     <p>The superblock is composed of the format signature, followed by a
       superblock version number and information that is specific to each
       version of the superblock.
-      Currently, there are three versions of the superblock format.
-      Version 0 is the default format, while version 1 is basically the same
-      as version 0 with additional information when a non-default B-tree ‘K’
-      value is stored.  Version 2 is the latest format, with some fields
-      eliminated or compressed and with superblock extension and checksum
-      support.</p>
 
-    <p>Version 0 and 1 of the superblock are described below:</p>
+    <p>Currently, there are four versions of the superblock format:
+      <ul>
+      <li>Version 0 is the default format.</li>
+      <li>Version 1 is the same as version 0 but with the 
+      “<em>Indexed Storage Internal Node K</em>” field 
+      for storing non-default B-tree ‘K’ value.</li>
+      <li>Version 2 has some fields eliminated and compressed from 
+      superblock format versions 0 and 1. It has added checksum support 
+      and superblock extension to store additional superblock 
+      metadata.</li>
+      <li>Version 3 is the same as version 2 except that the field 
+      “<em>File Consistency Flags</em>” is used for file 
+      locking. This format version will enable support for the latest 
+      version.</li>
+      </ul>
+
+    <p>Versions 0 and 1 of the superblock are described below:</p>
 
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Superblock (Versions 0 and 1)
-	</caption>
+    <caption>
+        Layout: Superblock (Versions 0 and 1)
+    </caption>
 
 	<tr>
 	  <th>byte</th>
@@ -503,21 +586,22 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	</tr>  
 
 	<tr>
-	  <td colspan="4"><br />Format Signature (8 bytes)<br /><br /></td>
+	  <td colspan="4"><br />Format Signature 
+      <em>(8 bytes)</em><br /><br /></td>
 	</tr>
 
 	<tr>
 	  <td>Version # of Superblock</td>
 	  <td>Version # of File’s Free Space Storage</td>
 	  <td>Version # of Root Group Symbol Table Entry</td>
-	  <td>Reserved (zero)</td>
+	  <td>Reserved <em>(zero)</em></td>
 	</tr>
 
 	<tr>
-	  <td>Version # of Shared Header Message Format</td>
+	  <td>Version Number of Shared Header Message Format</td>
 	  <td>Size of Offsets</td>
 	  <td>Size of Lengths</td>
-	  <td>Reserved (zero)</td>
+	  <td>Reserved <em>(zero)</em></td>
 	</tr>
 
 	<tr>
@@ -531,7 +615,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 
 	<tr>
 	  <td colspan="2" style="border:dotted;">Indexed Storage Internal Node K<sup>1</sup></td>
-	  <td colspan="2" style="border:dotted;">Reserved (zero)<sup>1</sup></td>
+	  <td colspan="2" style="border:dotted;">Reserved 
+      <em>(zero)</em><sup>1</sup></td>
 	</tr>
 
 	<tr>
@@ -557,23 +642,27 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are
-	    of the size specified in “Size of Offsets.”)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
+            <td width="60%"> </td>
+            <td width="40%">
             (Items marked with a ‘1’ in the above table are
-            new in version 1 of the superblock)
-        </td></tr>
+            new in version 1 of the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Superblock (Versions 0 and 1)
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -655,8 +744,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	    determine how the information in the superblock is
 	    formatted.</p>
 
-            <p>Values of 0, 1 and 2 are defined for this field.  (The format
-            of version 2 is described below, not here)
+            <p>Values of 0, 1 and 2 are defined for this field (the 
+            format of version 2 is described below, not here).
             </p>
 
             <p><em>This field is present in version 0+ of the superblock.</em>
@@ -676,7 +765,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
             <a href="#FreeSpaceManager">below</a>.
             </p>
 
-            <p><em>This field is present in version 0 and 1 of the superblock.</em>
+            <p><em>This field is present in versions 0 and 1 of the 
+            superblock.</em>
             </p>
           </td>
 	</tr>
@@ -717,7 +807,7 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	</tr>
 
 	<tr>
-	  <td><p>Size of Offsets</p></td>
+	  <td><p><a name="SizeOfOffsetsV0">Size of Offsets</a></p></td>
 	  <td><p>This value contains the number of bytes used to store
 	    addresses in the file.  The values for the addresses of
 	    objects in the file are offsets relative to a base address,
@@ -732,7 +822,7 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	</tr>
 
 	<tr>
-	  <td><p>Size of Lengths</p></td>
+	  <td><p><a name="SizeOfLengthsV0">Size of Lengths</a></p></td>
 	  <td><p>This value contains the number of bytes used to store
 	    the size of an object.
             </p>
@@ -780,27 +870,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
         <tr>
           <td><p>File Consistency Flags</p></td>
           <td>
-            <p>This value contains flags to indicate information
-            about the consistency of the information contained
-            within the file.  Currently, the following bit flags are
-            defined: 
-            <ul>
-            <li>Bit 0 set indicates that the file is opened for
-            write-access.</li>
-            <li>Bit 1 set indicates that the file has
-            been verified for consistency and is guaranteed to be
-            consistent with the format defined in this document.</li>
-            <li>Bits 2-31 are reserved for future use.</li>
-            </ul>
-            Bit 0 should be
-            set as the first action when a file is opened for write
-            access and should be cleared only as the final action
-            when closing a file.  Bit 1 should be cleared during
-            normal access to a file and only set after the file’s
-            consistency is guaranteed by the library or a
-            consistency utility.
+            <p>This field is unused and should be ignored.
             </p>
-
             <p><em>This field is present in version 0+ of the superblock.</em>
             </p>
           </td>
@@ -906,13 +977,15 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
     </div>
 
     <br />
-    <p>Version 2 of the superblock is described below:</p>
+    <br />
+    <br />
+    <p>Versions 2 and 3 of the superblock are described below:</p>
 
     <div align="center">
       <table class="format">
-	<caption>
-	  Superblock (Version 2)
-	</caption>
+    <caption>
+        Layout: Superblock (Versions 2 and 3)
+    </caption>
 
 	<tr>
 	  <th>byte</th>
@@ -922,7 +995,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	</tr>  
 
 	<tr>
-	  <td colspan="4"><br />Format Signature (8 bytes)<br /><br /></td>
+	  <td colspan="4"><br />Format Signature 
+      <em>(8 bytes)</em><br /><br /></td>
 	</tr>
 
 	<tr>
@@ -955,11 +1029,12 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
+            <td width="60%"> </td>
+            <td width="40%">
             (Items marked with an ‘O’ in the above table are
-	    of the size specified in “Size of Offsets.”)
-        </td></tr>
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -967,6 +1042,9 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Superblock (Versions 2 and 3)
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -992,8 +1070,9 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	<tr>
 	  <td><p>Size of Offsets</p></td>
 	  <td>
-            <p>This field is the same as described for versions 0 and 1 of the
-                superblock.
+            <p>This field is the same as described for 
+            <a href="#SizeOfOffsetsV0">versions 0 and 1</a> of the 
+            superblock.
             </p>
           </td>
 	</tr>
@@ -1001,27 +1080,51 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 	<tr>
 	  <td><p>Size of Lengths</p></td>
 	  <td>
-            <p>This field is the same as described for versions 0 and 1 of the
-                superblock.
+            <p>This field is the same as described for 
+            <a href="#SizeOfLengthsV0">versions 0 and 1</a> of the 
+            superblock.
             </p>
           </td>
 	</tr>
 
         <tr>
           <td><p>File Consistency Flags</p></td>
+
           <td>
-            <p>This field is the same as described for versions 0 and 1 except
-            that it is smaller (the number of reserved bits has been reduced
-            from 30 to 6).
+            <p>For superblock version 
+            2: This field is unused and should be ignored.</p>
+            <p>For superblock version 
+            3: This value contains flags to ensure file consistency for 
+            file locking. Currently, the following bit flags are defined: 
+            <ul>
+            <li>Bit 0 if set indicates that the file has been opened for 
+            write access.</li>
+            <li>Bit 1 is reserved for future use.</li>
+            <li>Bit 2 if set indicates that the file has been opened for 
+            single-writer/multiple-reader (SWMR) write access.</li>
+            <li>Bits 3-7 are reserved for future use.</li>
+            </ul>
+	    <p>
+            Bit 0 should be set as the first action when a file has been 
+            opened for write access. Bit 2 should be set when a file 
+            has been opened for SWMR write access. These two bits should 
+            be cleared only as the final action when closing a file.
+            </p>
+            <p><em>This field is present in version 0+ of the superblock.</em>
+            </p>
+            <p><em>The size of this 
+            field has been reduced from 4 bytes in superblock format 
+            versions 0 and 1 to 1 byte.</em>
             </p>
           </td>
+
         </tr>
 
         <tr>
           <td><p>Base Address</p></td>
           <td>
-            <p>This field is the same as described for versions 0 and 1 of the
-                superblock.
+            <p>This field is the same as described for versions 0 and 
+            1 of the superblock.
             </p>
           </td>
         </tr>
@@ -1067,7 +1170,8 @@ II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
       </table>
     </div>
 
-<br />
+    <br />
+
 <h3><a name="DriverInfo">
 II.B. Disk Format: Level 0B - File Driver Info</a></h3>
 
@@ -1079,7 +1183,7 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Driver Information Block
+            Layout: Driver Information Block
         </caption>
  
         <tr>
@@ -1099,11 +1203,13 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Driver Identification (8 bytes)<br /><br /></td>
+          <td colspan="4"><br />Driver Identification 
+          <em>(8 bytes)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br /><br />Driver Information (<em>variable size</em>)<br /><br /><br /></td>
+          <td colspan="4"><br /><br />Driver Information 
+          <em>(variable size)</em><br /><br /><br /></td>
         </tr>
       </table>
     </div>
@@ -1111,6 +1217,9 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Driver Information Block
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -1163,7 +1272,8 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     </div>
 
     <br />
-    The two drivers encoded in the <em>Driver Identification</em> field are as follows:
+    <p>The two drivers encoded in the <em>Driver Identification</em> 
+    field are as follows:</p>
     <ul>
     <li>
     Multi driver:
@@ -1191,9 +1301,9 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
 
     <div align="center">
       <table class="format">
-	<caption>
-	  Multi Driver Information
-	</caption>
+    <caption>
+        Layout: Multi Driver Information
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -1245,11 +1355,13 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name of Member File 1 <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Name of Member File 1 
+      <em>(variable size)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name of Member File 2 <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Name of Member File 2 
+      <em>(variable size)</em><br /><br /></td>
 	</tr>
 
 	<tr>
@@ -1257,7 +1369,8 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name of Member File N <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Name of Member File N 
+      <em>(variable size)</em><br /><br /></td>
 	</tr>
 
       </table>
@@ -1266,6 +1379,9 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Multi Driver Information
+    </caption>
 	<tr>
 	  <th width="30%">Field Name</th>
 	  <th>Description</th>
@@ -1347,11 +1463,13 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     </div>
 
     <br />
+    <br />
+    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  Family Driver Information
-	</caption>
+    <caption>
+        Layout: Family Driver Information
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -1370,6 +1488,9 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Family Driver Information
+    </caption>
 	<tr>
 	  <th width="30%">Field Name</th>
 	  <th>Description</th>
@@ -1382,15 +1503,14 @@ II.B. Disk Format: Level 0B - File Driver Info</a></h3>
       </table>
     </div>
 
-<br />
 <h3><a name="SuperblockExt">
 II.C. Disk Format: Level 0C - Superblock Extension</a></h3>
 
-    <p>The <em>superblock extension</em> is used to store superblock metadata
-      which is either optional, or added after the version of the superblock
-      was defined.  Superblock extensions may only exist when version 2+ of
-      superblock is used.  A superblock extension is an object header which may
-      hold the following messages:</p>
+<p>The <em>superblock extension</em> is used to store superblock metadata
+which is either optional, or added after the version of the superblock
+was defined. Superblock extensions may only exist when version 2 
+or later of the superblock is used. A superblock extension is an object 
+header which may hold the following messages:</p>
 	<ul>
 	<li>
 	<a href="#SOHMTableMessage">Shared Message Table message</a> containing
@@ -1405,20 +1525,18 @@ II.C. Disk Format: Level 0C - Superblock Extension</a></h3>
         See also the 
         <a href="#DriverInfo">“Disk Format: Level 0B - File Driver 
         Info”</a> section above.</li>
+<!-- Will be updated for release 1.10.1
 	<li>
 	<a href="#FsinfoMessage">File Space Info message</a> containing
 	information about file space handling in the file.</li>
+-->
 	</ul>
 
 
 
-<br />
-<br />
-<hr />
 <h2><a name="FileInfra">
 III. Disk Format: Level 1 - File Infrastructure</a></h2>
 
-<br />
 <h3><a name="Btrees">
 III.A. Disk Format: Level 1A - B-trees and B-tree Nodes</a></h3>
 
@@ -1429,26 +1547,25 @@ III.A. Disk Format: Level 1A - B-trees and B-tree Nodes</a></h3>
       L. Rivest.  B-trees are used in several places in the HDF5 file format,
       when an index is needed for another data structure.</p>
 
-    <p>The version 1 B-tree structure described below is the original index
-      structure, but are limited by some bugs in our implementation (mainly in
-      how they handle deleting records).  The version 1 B-trees are being phased
-      out in favor of the version 2 B-trees described below, although both
-      types of structures may be found in the same file, depending on
-      application settings when creating the file.</p>
+    <p>The version 1 B-tree structure described below is the original 
+    index structure. The version 1 B-trees are being phased out in 
+    favor of the version 2 B-trees described below. Note that both 
+    types of structures may be found in the same file depending on 
+    the application settings when creating the file.</p>
 
-<br />
 <h4><a name="V1Btrees">
-III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
-
-    <p>Version 1 B-trees in HDF5 files an implementation of the B-link tree,
-      in which the sibling nodes at a particular level in the tree are stored
-      in a doubly-linked list, is described in the “Efficient Locking for
-      Concurrent Operations on B-trees” paper by Phillip Lehman and S. Bing Yao
-      as published in the <cite>ACM Transactions on Database Systems</cite>,
-      Vol. 6, No. 4, December 1981.</p>
-
-    <p>The B-link trees implemented by the file format contain one more
-      key than the number of children.  In other words, each child
+III.A.1. Disk Format: Level 1A1 - Version 1 B-trees</a></h4>
+
+    <p>Version 1 B-trees in HDF5 files are an implementation of the 
+    B-link tree. The sibling nodes at a particular level in 
+    the tree are stored in a doubly-linked list. See the 
+    “Efficient Locking for Concurrent Operations on B-trees” 
+    paper by Phillip Lehman and S. Bing Yao as published in the 
+    <cite>ACM Transactions on Database Systems</cite>, Vol. 6, No. 4, 
+    December 1981.</p>
+
+    <p>The B-trees implemented by the file format contain one more
+      key than the number of children. In other words, each child
       pointer out of a B-tree node has a left key and a right key.
       The pointers out of internal nodes point to sub-trees while
       the pointers out of leaf nodes point to symbol nodes and 
@@ -1459,7 +1576,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
     <div align="center">
       <table class="format">
         <caption>
-          B-link Tree Nodes
+            Layout: B-tree Nodes
         </caption>
 
         <tr>
@@ -1488,7 +1605,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         </tr>
 
         <tr>
-          <td colspan="4">Key 0 (variable size)</td>
+          <td colspan="4">Key 0 <em>(variable size)</em></td>
         </tr>
 
         <tr>
@@ -1496,7 +1613,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         </tr>
 
         <tr>
-          <td colspan="4">Key 1 (variable size)</td>
+          <td colspan="4">Key 1 <em>(variable size)</em></td>
         </tr>
 
         <tr>
@@ -1508,7 +1625,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         </tr>
 
         <tr>
-          <td colspan="4">Key 2<em>K</em> (variable size)</td>
+          <td colspan="4">Key 2<em>K</em> <em>(variable size)</em></td>
         </tr>
 
         <tr>
@@ -1516,17 +1633,19 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         </tr>
 
         <tr>
-          <td colspan="4">Key 2<em>K</em>+1 (variable size)</td>
+          <td colspan="4">Key 2<em>K</em>+1 
+          <em>(variable size)</em></td>
         </tr>
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -1534,6 +1653,9 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: B-tree Nodes
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -1542,11 +1664,10 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         <tr>
           <td><p>Signature</p></td>
           <td>
-            <p>The ASCII character string “<code>TREE</code>” is 
-            used to indicate the
-            beginning of a B-link tree node.  This gives file
-            consistency checking utilities a better chance of
-            reconstructing a damaged file.
+            <p>The ASCII character string “<code>TREE</code>” 
+            is used to indicate the beginning of a B-tree node. This 
+            gives file consistency checking utilities a better chance 
+            of reconstructing a damaged file.
             </p>
           </td>
         </tr>
@@ -1554,7 +1675,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
         <tr>
           <td><p>Node Type</p></td>
           <td>
-            <p>Each B-link tree points to a particular type of data.
+            <p>Each B-tree points to a particular type of data.
             This field indicates the type of data as well as
             implying the maximum degree <em>K</em> of the tree and
             the size of each Key field.
@@ -1631,11 +1752,12 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
           <td><p>Keys and Child Pointers</p></td>
           <td>
             <p>Each tree has 2<em>K</em>+1 keys with 2<em>K</em>
-            child pointers interleaved between the keys.  The number
+            child pointers interleaved between the keys. The number
             of keys and child pointers actually containing valid
-            values is determined by the node’s <em>Entries Used</em> field.
-            If that field is <em>N</em> then the B-link tree contains
-            <em>N</em> child pointers and <em>N</em>+1 keys.
+            values is determined by the node’s <em>Entries 
+            Used</em> field. If that field is <em>N</em>, then the 
+            B-tree contains <em>N</em> child pointers and 
+            <em>N</em>+1 keys.
             </p>
           </td>
         </tr>
@@ -1660,7 +1782,8 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
             
             <table class="list">
             <tr>
-              <td width="20%">A single field of <i>Size of Lengths</i> 
+              <td width="20%">A single field of 
+                <i><a href="#SizeOfLengthsV0">Size of Lengths</a></i> 
                 bytes:</td>
               <td width="80%">Indicates the byte offset into the local heap 
                 for the first object name in the subtree which 
@@ -1693,8 +1816,8 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
               <td>The offset of the 
                 chunk within the dataset where <i>D</i> is the number 
                 of dimensions of the dataset, and the last value is the
-                offset within the dataset’s datatype and should always be
-                zero.  For example, if 
+                offset within the dataset’s datatype and should 
+                always be zero. For example, if 
                 a chunk in a 3-dimensional dataset begins at the
                 position <code>[5,5,5]</code>, there will be three
                 such 64-bit values, each with the value of 
@@ -1757,7 +1880,7 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
      “Is the value described by key[<i>i</i>] contained in 
      child[<i>i</i>-1] or in child[<i>i</i>]?”  
      The answer depends on the type of tree. 
-     In trees for groups (node type 0) the object described by 
+     In trees for groups (node type 0), the object described by 
      key[<i>i</i>] is the greatest object contained in 
      child[<i>i</i>-1] while in chunk trees (node type 1) the 
      chunk described by key[<i>i</i>] is the least chunk in 
@@ -1765,24 +1888,25 @@ III.A.1. Disk Format: Level 1A1 - Version 1 B-trees (B-link Trees)</a></h4>
 
     <p>That means that key[0] for group trees is sometimes unused; 
      it points to offset zero in the heap, which is always the 
-     empty string and compares as “less-than” any valid object name.</p>
+     empty string and compares as “less-than” any valid 
+     object name.</p>
 
     <p>And key[<i>N</i>] for chunk trees is sometimes unused; 
      it contains a chunk offset which compares as “greater-than” 
      any other chunk offset and has a chunk byte size of zero 
      to indicate that it is not actually allocated.</p>
 
-<br />
 <h4><a name="V2Btrees">
 III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
-    <p>Version 2 B-trees are “traditional” B-trees, with one major difference.
-        Instead of just using a simple pointer (or address in the file) to a
-        child of an internal node, the pointer to the child node contains two
-        additional pieces of information: the number of records in the child
-        node itself, and the total number of records in the child node and
-        all its descendants.  Storing this additional information allows fast
-        array-like indexing to locate the n<sup>th</sup> record in the B-tree.</p>
+    <p>Version 2 (v2) B-trees are “traditional” B-trees 
+    with one major difference. Instead of just using a simple pointer 
+    (or address in the file) to a child of an internal node, the pointer 
+    to the child node contains two additional pieces of information: 
+    the number of records in the child node itself, and the total number 
+    of records in the child node and all its descendants. Storing this 
+    additional information allows fast array-like indexing to locate 
+    the n<sup>th</sup> record in the B-tree.</p>
 
     <p>The entry into a version 2 B-tree is a header which contains global
         information about the structure of the B-tree.  The <em>root node
@@ -1797,7 +1921,7 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree Header
+            Layout: Version 2 B-tree Header
         </caption>
 
         <tr>
@@ -1843,17 +1967,19 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -1861,7 +1987,11 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
-	<tr>
+        <caption>
+            Fields: Version 2 B-tree Header
+        </caption>
+
+    <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
@@ -1869,8 +1999,9 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
         <tr>
           <td><p>Signature</p></td>
           <td>
-            <p>The ASCII character string “<code>BTHD</code>” is 
-            used to indicate the header of a version 2 B-link tree node.
+            <p>The ASCII character string “<code>BTHD</code>” 
+            is used to indicate the header of a version 2 (v2) B-tree 
+            node.
             </p>
           </td>
         </tr>
@@ -1895,8 +2026,9 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
                 </tr>
                 <tr>
                     <td align="center">0</td>
-                    <td>A “testing” B-tree, this value should <em>not</em> be
-                        used for storing records in actual HDF5 files.
+                    <td>This B-tree is used for testing only. This 
+                    value should <em>not</em> be used for storing 
+                    records in actual HDF5 files.
                     </td>
                 </tr>
                 <tr>
@@ -1953,6 +2085,22 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
                         field for indexed attributes.
                     </td>
                 </tr>
+
+                <tr>
+                    <td align="center">10</td>
+                    <td>This B-tree is used for indexing chunks of 
+                    datasets with no filters and with more than one 
+                    dimension of unlimited extent.
+                    </td>
+                </tr>
+
+                <tr>
+                    <td align="center">11</td>
+                    <td>This B-tree is used for indexing chunks of 
+                    datasets with filters and more than one dimension 
+                    of unlimited extent. 
+                    </td>
+                </tr>
             </table></p>
             <p>The format of records for each type is described below.</p>
           </td>
@@ -2038,10 +2186,11 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree Internal Node
+            Layout: Version 2 B-tree Internal Node
         </caption>
 
         <tr>
@@ -2063,18 +2212,22 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 	  <td colspan="4"><br />Child Node Pointer 0<sup>O</sup><br /><br /></td>
 	</tr>
     <tr>
-	  <td colspan="4"><br />Number of Records N<sub>0</sub> for Child Node 0 <em>(variable size)</em></td>
+	  <td colspan="4"><br />Number of Records N<sub>0</sub> for Child 
+      Node 0 <em>(variable size)</em></td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Total Number of Records for Child Node 0 <em>(optional, variable size)</em></td>
+	  <td colspan="4"><br />Total Number of Records for Child Node 0 
+      <em>(optional, variable size)</em></td>
 	</tr>
 	<tr>
 	  <td colspan="4"><br />Child Node Pointer 1<sup>O</sup><br /><br /></td>
 	</tr>
-	  <td colspan="4"><br />Number of Records N<sub>1</sub> for Child Node 1 <em>(variable size)</em></td>
+	  <td colspan="4"><br />Number of Records N<sub>1</sub> for 
+      Child Node 1 <em>(variable size)</em></td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Total Number of Records for Child Node 1 <em>(optional, variable size)</em></td>
+	  <td colspan="4"><br />Total Number of Records for Child Node 1 
+      <em>(optional, variable size)</em></td>
 	</tr>
 	<tr>
 	  <td colspan="4">...</td>
@@ -2083,10 +2236,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 	  <td colspan="4"><br />Child Node Pointer N<sup>O</sup><br /><br /></td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Number of Records N<sub>n</sub> for Child Node N <em>(variable size)</em></td>
+	  <td colspan="4"><br />Number of Records N<sub>n</sub> for 
+      Child Node N <em>(variable size)</em></td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Total Number of Records for Child Node N <em>(optional, variable size)</em></td>
+	  <td colspan="4"><br />Total Number of Records for Child Node N 
+      <em>(optional, variable size)</em></td>
 	</tr>
 	<tr>
 	  <td colspan="4">Checksum</td>
@@ -2095,11 +2250,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
 
@@ -2107,6 +2263,9 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree Internal Node
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2116,7 +2275,7 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
           <td><p>Signature</p></td>
           <td>
             <p>The ASCII character string “<code>BTIN</code>” is 
-            used to indicate the internal node of a B-link tree.
+            used to indicate the internal node of a B-tree.
             </p>
           </td>
         </tr>
@@ -2181,7 +2340,7 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
                 from the size of nodes for the B-tree. </li>
                 <li>Divide that result by the size of a record plus the 
                 pointer triplet of information stored to reach each 
-                child node from this node.
+                child node from this node.</li>
                 </ul>
                 
             </p>
@@ -2265,10 +2424,11 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree Leaf Node
+            Layout: Version 2 B-tree Leaf Node
         </caption>
 
         <tr>
@@ -2295,6 +2455,9 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree Leaf Node
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2303,8 +2466,8 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
         <tr>
           <td><p>Signature</p></td>
           <td>
-            <p>The ASCII character string “<code>BTLF</code>“ is 
-                used to indicate the leaf node of a version 2 B-link tree.
+            <p>The ASCII character string “<code>BTLF</code>“ 
+            is used to indicate the leaf node of a version 2 (v2) B-tree.
             </p>
           </td>
         </tr>
@@ -2349,14 +2512,16 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     </div>
 
     <br />
+    <br />
+    <br />
     <p>The record layout for each stored (in other words, non-testing) 
     B-tree type is as follows:</p>
     
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 1 Record Layout - Indirectly Accessed, Non-Filtered,
-            ‘Huge’ Fractal Heap Objects
+            Layout: Version 2 B-tree, Type 1 Record Layout - Indirectly 
+            Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
         </caption>
 
         <tr>
@@ -2379,17 +2544,19 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -2397,6 +2564,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 1 Record Layout - Indirectly 
+            Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2431,11 +2602,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 2 Record Layout - Indirectly Accessed, Filtered,
-            ‘Huge’ Fractal Heap Objects
+            Layout: Version 2 B-tree, Type 2 Record Layout - Indirectly 
+            Accessed, Filtered, ‘Huge’ Fractal Heap Objects
         </caption>
 
         <tr>
@@ -2464,17 +2636,19 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -2482,6 +2656,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 2 Record Layout - Indirectly 
+            Accessed, Filtered, ‘Huge’ Fractal Heap Objects
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2535,11 +2713,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 3 Record Layout - Directly Accessed, Non-Filtered,
-            ‘Huge’ Fractal Heap Objects
+            Layout: Version 2 B-tree, Type 3 Record Layout - Directly 
+            Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
         </caption>
 
         <tr>
@@ -2559,17 +2738,19 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -2577,6 +2758,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 3 Record Layout - Directly 
+            Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2603,11 +2788,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 4 Record Layout - Directly Accessed, Filtered,
-            ‘Huge’ Fractal Heap Objects
+            Layout: Version 2 B-tree, Type 4 Record Layout - Directly 
+            Accessed, Filtered, ‘Huge’ Fractal Heap Objects
         </caption>
 
         <tr>
@@ -2633,17 +2819,19 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -2651,6 +2839,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 4 Record Layout - Directly 
+            Accessed, Filtered, ‘Huge’ Fractal Heap Objects
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2696,10 +2888,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 5 Record Layout - Link Name for Indexed Group
+            Layout: Version 2 B-tree, Type 5 Record Layout - Link Name 
+            for Indexed Group
         </caption>
 
         <tr>
@@ -2726,6 +2920,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 5 Record Layout - Link Name 
+            for Indexed Group
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2754,10 +2952,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 6 Record Layout - Creation Order for Indexed Group
+            Layout: Version 2 B-tree, Type 6 Record Layout - Creation 
+            Order for Indexed Group
         </caption>
 
         <tr>
@@ -2768,7 +2968,8 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Creation Order <em>(8 bytes)</em><br /><br /></td>
+          <td colspan="4"><br />Creation Order 
+          <em>(8 bytes)</em><br /><br /></td>
         </tr>
         <tr>
           <td colspan="4">ID <em>(bytes 1-4)</em></td>
@@ -2782,6 +2983,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 6 Record Layout - Creation 
+            Order for Indexed Group
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2808,10 +3013,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 7 Record Layout - Shared Object Header Messages (Sub-Type 0 - Message in Heap)
+            Layout: Version 2 B-tree, Type 7 Record Layout - Shared 
+            Object Header Messages (Sub-type 0 - Message in Heap)
         </caption>
 
         <tr>
@@ -2840,6 +3047,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 7 Record Layout - Shared 
+            Object Header Messages (Sub-type 0 - Message in Heap)
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -2897,10 +3108,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 7 Record Layout - Shared Object Header Messages (Sub-Type 1 - Message in Object Header)
+            Layout: Version 2 B-tree, Type 7 Record Layout - Shared 
+            Object Header Messages (Sub-type 1 - Message in Object Header)
         </caption>
 
         <tr>
@@ -2929,11 +3142,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -2941,6 +3155,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 7 Record Layout - Shared 
+            Object Header Messages (Sub-type 1 - Message in Object Header)
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3005,10 +3223,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 8 Record Layout - Attribute Name for Indexed Attributes
+            Layout: Version 2 B-tree, Type 8 Record Layout - Attribute 
+            Name for Indexed Attributes
         </caption>
 
         <tr>
@@ -3037,6 +3257,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 8 Record Layout - Attribute 
+            Name for Indexed Attributes
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3079,10 +3303,12 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Version 2 B-tree, Type 9 Record Layout- Creation Order for Indexed Attributes
+            Layout: Version 2 B-tree, Type 9 Record Layout - Creation 
+            Order for Indexed Attributes
         </caption>
 
         <tr>
@@ -3097,7 +3323,8 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
         </tr>
         <tr>
           <td colspan>Message Flags</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="3" bgcolor="#DDDDDD">
+          <em>This space inserted only to align table nicely</em></td>
         </tr>
         <tr>
           <td colspan="4">Creation Order</td>
@@ -3108,6 +3335,10 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 9 Record Layout - Creation 
+            Order for Indexed Attributes
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3139,36 +3370,16 @@ III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
       </table>
     </div>
 
-
-<br />
-<h3><a name="SymbolTable">
-III.B. Disk Format: Level 1B - Group Symbol Table Nodes</a></h3>
-
-    <p>A group is an object internal to the file that allows
-      arbitrary nesting of objects within the file (including other groups).
-      A group maps a set of link names in the group to a set of relative
-      file addresses of objects in the file.  Certain metadata for an object to
-      which the group points can be cached in the group’s symbol table entry in
-      addition to being in the object’s header.</p>
-
-    <p>An HDF5 object name space can be stored hierarchically by
-      partitioning the name into components and storing each
-      component as a link in a group.  The link for a
-      non-ultimate component points to the group containing
-      the next component.  The link for the last
-      component points to the object being named.</p>
-
-    <p>One implementation of a  group is a collection of symbol table nodes
-      indexed by a B-link tree.  Each symbol table node contains entries
-      for one or more links.  If an attempt is made to add a link to an already
-      full symbol table node containing 2<em>K</em> entries, then the node is
-      split and one node contains <em>K</em> symbols and the other contains
-      <em>K</em>+1 symbols.</p>
-
+    <br />
+    <br />
+    <br />
+    <a name="V2BtType10">
     <div align="center">
       <table class="format">
         <caption>
-          Symbol Table Node (A Leaf of a B-link tree)
+            <a name="V2BtreesType10">
+            Layout: Version 2 B-tree, Type 10 Record Layout - 
+            Non-filtered Dataset Chunks</a>
         </caption>
 
         <tr>
@@ -3176,41 +3387,268 @@ III.B. Disk Format: Level 1B - Group Symbol Table Nodes</a></h3>
           <th>byte</th>
           <th>byte</th>
           <th>byte</th>
-        </tr>
-        
-        <tr>
-          <td colspan="4">Signature</td>
-        </tr>
+	</tr>
 
-        <tr>
-          <td>Version Number</td>
-          <td>Reserved (zero)</td>
-          <td colspan="2">Number of Symbols</td>
-        </tr>
+	<tr>
+          <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension 0 Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension 1 Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />...<br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension #n Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+      </table>
 
+      <table class="note">
         <tr>
-          <td colspan="4"><br /><br />Group Entries<br /><br /><br /></td>
-        </tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
-        <tr>
+        <caption>
+            Fields: Version 2 B-tree, Type 10 Record Layout - 
+            Non-filtered Dataset Chunks</a>
+        </caption>
+	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Signature</p></td>
+          <td><p>Address</p></td>
           <td>
-            <p>The ASCII character string “<code>SNOD</code>” is 
-            used to indicate the
-            beginning of a symbol table node.  This gives file
-            consistency checking utilities a better chance of
-            reconstructing a damaged file.
-            </p>
+            <p>This field is the address of the dataset chunk in the file.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Dimension #n Scaled Offset</p></td>
+          <td>
+            <p>This field is the scaled offset of the chunk within the 
+            dataset. <em>n</em> is the number of dimensions for the 
+            dataset. The first scaled offset stored in the list is for 
+            the slowest changing dimension, and the last scaled offset 
+            stored is for the fastest changing dimension. Scaled offset 
+            is calculated by dividing the chunk dimension sizes into 
+            the chunk offsets.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            <a name="V2BtreesType11">
+            Layout: Version 2 B-tree, Type 11 Record Layout - Filtered 
+            Dataset Chunks </a>
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Chunk Size 
+          <em>(variable size; at most 8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4">Filter Mask</td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension 0 Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension 1 Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />...<br /><br /></td>
+	</tr>
+
+	<tr>
+          <td colspan="4"><br />Dimension #n Scaled Offset 
+          <em>(8 bytes)</em><br /><br /></td>
+	</tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        </table>
+        
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Version 2 B-tree, Type 11 Record Layout - Filtered 
+            Dataset Chunks </a>
+        </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><p>Address</p></td>
+          <td>
+            <p>This field is the address of the dataset chunk in the file.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Chunk Size</p></td>
+          <td>
+            <p>This field is the size of the dataset chunk in bytes.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Filter Mask</p></td>
+          <td>
+            <p>This field is the filter mask which indicates the filter
+		to skip for the dataset chunk.  Each filter has an index
+		number in the pipeline and if that filter is skipped,
+		the bit corresponding to its index is set.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Dimension #n Scaled Offset</p></td>
+          <td>
+            <p>This field is the scaled offset of the chunk within 
+            the dataset. <em>n</em> is the number of dimensions for 
+            the dataset. The first scaled offset stored in the list 
+            is for the slowest changing dimension, and the last scaled 
+            offset stored is for the fastest changing dimension.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
+
+<h3><a name="SymbolTable">
+III.B. Disk Format: Level 1B - Group Symbol Table Nodes</a></h3>
+
+    <p>A group is an object internal to the file that allows 
+    arbitrary nesting of objects within the file (including other 
+    groups). A group maps a set of link names in the group to a set 
+    of relative file addresses of objects in the file. Certain metadata 
+    for an object to which the group points can be cached in the 
+    group’s symbol table entry in addition to being in the 
+    object’s header.</p>
+
+    <p>An HDF5 object name space can be stored hierarchically by
+      partitioning the name into components and storing each
+      component as a link in a group.  The link for a
+      non-ultimate component points to the group containing
+      the next component.  The link for the last
+      component points to the object being named.</p>
+
+    <p>One implementation of a  group is a collection of symbol table 
+    nodes indexed by a B-tree. Each symbol table node contains entries 
+    for one or more links. If an attempt is made to add a link to an 
+    already full symbol table node containing 2<em>K</em> entries, then 
+    the node is split and one node contains <em>K</em> symbols and the 
+    other contains <em>K</em>+1 symbols.</p>
+
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Symbol Table Node (A Leaf of a B-tree)
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
+        
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+
+        <tr>
+          <td>Version Number</td>
+          <td>Reserved <em>(zero)</em></td>
+          <td colspan="2">Number of Symbols</td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br /><br />Group Entries<br /><br /><br /></td>
+        </tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Symbol Table Node (A Leaf of a B-tree)
+        </caption>
+        <tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>SNOD</code>” is 
+            used to indicate the
+            beginning of a symbol table node.  This gives file
+            consistency checking utilities a better chance of
+            reconstructing a damaged file.
+            </p>
           </td>
         </tr>
 
@@ -3251,7 +3689,6 @@ III.B. Disk Format: Level 1B - Group Symbol Table Nodes</a></h3>
       </table>
     </div>
 
-<br />
 <h3><a name="SymbolTableEntry">
 III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
 
@@ -3264,7 +3701,7 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Symbol Table Entry
+            Layout: Symbol Table Entry
         </caption>
 
         <tr>
@@ -3287,21 +3724,23 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
         </tr>
 
         <tr>
-          <td colspan="4">Reserved (zero)</td>
+          <td colspan="4">Reserved <em>(zero)</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br /><br />Scratch-pad Space (16 bytes)<br /><br /><br /></td>
+          <td colspan="4"><br /><br />Scratch-pad Space 
+          <em>(16 bytes)</em><br /><br /><br /></td>
         </tr>
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -3309,6 +3748,9 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Symbol Table Entry
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3402,7 +3844,6 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
       </table>
     </div>
 
-<br />
 <h4>Format of the Scratch-pad Space</h4>
 
     <p>The symbol table entry scratch-pad space is formatted
@@ -3420,7 +3861,7 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Object Header Scratch-pad Format
+            Layout: Object Header Scratch-pad Format
         </caption>
 
         <tr>
@@ -3441,11 +3882,12 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -3453,6 +3895,9 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Object Header Scratch-pad Format
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3480,6 +3925,8 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
 
 
     <br />
+    <br />
+    <br />
     <p>If the Cache Type field contains the value two
       <code>(2)</code>, then the scratch-pad space
       contains cached metadata for a symbolic link
@@ -3488,7 +3935,7 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Symbolic Link Scratch-pad Format
+            Layout: Symbolic Link Scratch-pad Format
         </caption>
 
         <tr>
@@ -3507,6 +3954,9 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Symbolic Link Scratch-pad Format
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3525,7 +3975,6 @@ III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
       </table>
     </div>
 
-<br />
 <h3><a name="LocalHeap">
 III.D. Disk Format: Level 1D - Local Heaps</a></h3>
 
@@ -3540,7 +3989,7 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Local Heap
+            Layout: Local Heap
         </caption>
 
         <tr>
@@ -3556,7 +4005,7 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
 
         <tr>
           <td>Version</td>
-          <td colspan="3">Reserved (zero)</td>
+          <td colspan="3">Reserved <em>(zero)</em></td>
         </tr>
           
         <tr>
@@ -3574,17 +4023,19 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
         <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -3592,6 +4043,9 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Local Heap
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3636,14 +4090,15 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
             <p>This is the offset within the heap data segment of the
             first free block (or the
             <a href="#UndefinedAddress">undefined address</a> if there is no
-            free block).  The free block contains “Size of Lengths” bytes that
+            free block).  The free block contains 
+            <a href="#SizeOfLengthsV0">Size of Lengths</a> bytes that
             are the offset of the next free block (or the
             value ‘1’ if this is the
-            last free block) followed by “Size of Lengths” bytes that store
+            last free block) followed by Size of Lengths bytes that store
             the size of this free block.  The size of the free block includes
             the space used to store the offset of the next free block and
             the size of the current block, making the minimum size of a free 
-            block 2 * “Size of Lengths”.
+            block 2 * Size of Lengths.
             </p>
           </td>
         </tr>
@@ -3664,7 +4119,6 @@ III.D. Disk Format: Level 1D - Local Heaps</a></h3>
 
     <p>Objects within a local heap should be aligned on an 8-byte boundary.</p>
 
-<br />
 <h3><a name="GlobalHeap">
 III.E. Disk Format: Level 1E - Global Heap</a></h3>
 
@@ -3693,20 +4147,21 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
         already available at the file level and combines that with a new
         object called a <em>collection</em> to achieve goal B. The global heap
         is the set of all collections.  Each global heap object belongs to
-        exactly one collection and each collection contains one or more global
+        exactly one collection, and each collection contains one or more global
         heap objects. For the purposes of disk I/O and caching, a collection is
         treated as an atomic object, addressing goal A.
     </p>
 
-    <p>When a global heap object is deleted from a collection (which occurs
-        when its reference count falls to zero), objects located after the
-        deleted object in the collection are packed down toward the beginning
-        of the collection and the collection’s global heap object 0 is created
-        (if possible) or its size is increased to account for the recently
-        freed space.  There are no gaps between objects in each collection,
-        with the possible exception of the final space in the collection, if
-        it is not large enough to hold the header for the collection’s global
-        heap object 0.  These features address goal C.
+    <p>When a global heap object is deleted from a collection (which 
+        occurs when its reference count falls to zero), objects located 
+        after the deleted object in the collection are packed down toward 
+        the beginning of the collection, and the collection’s 
+        global heap object 0 is created (if possible), or its size is 
+        increased to account for the recently freed space. There are 
+        no gaps between objects in each collection, with the possible 
+        exception of the final space in the collection, if it is not 
+        large enough to hold the header for the collection’s 
+        global heap object 0. These features address goal C.
     </p>
 
     <p>The HDF5 Library creates global heap collections as needed, so there may
@@ -3719,11 +4174,16 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
         global heap and is accessed via a global heap ID.  The format for
         global heap IDs is described at the end of this section.
     </p>
+    
+    <p>For more information on global heaps for virtual datasets, see 
+    <a href="#GlobalHeapVDS">“Disk Format: Level 1F - Global Heap 
+    Block for Virtual Datasets.”</a></p>
+    <br />
 
     <div align="center">
       <table class="format">
         <caption>
-          A Global Heap Collection
+            Layout: A Global Heap Collection
         </caption>
 
         <tr>
@@ -3769,11 +4229,12 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -3781,6 +4242,9 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: A Global Heap Collection
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3847,10 +4311,11 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Global Heap Object
+            Layout: Global Heap Object
         </caption>
 
         <tr>
@@ -3882,8 +4347,9 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
         <tr>
         <td width="60%"> </td>
         <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
         </td></tr>
       </table>
 
@@ -3892,6 +4358,9 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Global Heap Object
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -3952,6 +4421,8 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     </div>
 
     <br />
+    <br />
+    <br />
     <p>
     The format for the ID used to locate an object in the global heap is
     described here:</p>
@@ -3959,7 +4430,7 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     <div align="center">
       <table class="format">
         <caption>
-          Global Heap ID
+            Layout: Global Heap ID
         </caption>
 
         <tr>
@@ -3980,11 +4451,12 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -3992,6 +4464,9 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Global Heap ID
+        </caption>
         <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -4017,237 +4492,81 @@ III.E. Disk Format: Level 1E - Global Heap</a></h3>
 
       </table>
     </div>
-    
 
-<br />
-<h3><a name="FractalHeap">
-III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
 
-        <p>
-	    Each fractal heap consists of a header and zero or more direct and
-            indirect blocks (described below).  The header contains general
-            information as well as
-            initialization parameters for the doubling table.  The <em>Root
-            Block Address</em> in the header points to the first direct or
-            indirect block in the heap.
-        </p>
 
-        <p>
-            Fractal heaps are based on a data structure called a <em>doubling
-            table</em>.  A doubling table provides a mechanism for quickly
-            extending an array-like data structure that minimizes the number of
-            empty blocks in the heap, while retaining very fast lookup of any
-            element within the array.  More information on fractal heaps and
-            doubling tables can be found in the RFC 
-            “<a href="Supplements/FractalHeap/PrivateHeap.pdf">Private
-            Heaps in HDF5</a>.”
-        </p>
+<h3><a name="GlobalHeapVDS"> III.F. Disk Format: Level 1F - Global 
+Heap Block for Virtual Datasets</a></h3>
 
-        <p>
-            The fractal heap implements the doubling table structure with
-            indirect and direct blocks.
-            Indirect blocks in the heap do not actually contain data for
-            objects in the heap, their “size” is abstract - 
-            they represent the indexing structure for locating the
-            direct blocks in the doubling table.
-            Direct blocks
-            contain the actual data for objects stored in the heap.
-        </p>
+<p>The layout for the global heap block used with virtual datasets is 
+described below. For more information on global heaps, see 
+<a href="#GlobalHeap">“Disk Format: Level 1E - Global Heap.”</p>
 
-        <p>
-            All indirect blocks have a constant number of block entries in each
-            row, called the <em>width</em> of the doubling table (stored in
-            the heap header).
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+          Layout: Global Heap Block for Virtual Dataset
+        </caption>
 
-            The number
-            of rows for each indirect block in the heap is determined by the
-            size of the block that the indirect block represents in the
-            doubling table (calculation of this is shown below) and is
-            constant, except for the “root”
-            indirect block, which expands and shrinks its number of rows as
-            needed. 
-        </p>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-        <p>
-            Blocks in the first <em>two</em> rows of an indirect block 
-            are <em>Starting Block Size</em> number of bytes in size, 
-            and the blocks in each subsequent row are twice the size of 
-            the blocks in the previous row. In other words, blocks in 
-            the third row are twice the <em>Starting Block Size</em>, 
-            blocks in the fourth row are four times the 
-            <em>Starting Block Size</em>, and so on.  Entries for
-            blocks up to the <em>Maximum Direct Block Size</em> point to 
-            direct blocks, and entries for blocks greater than that size 
-            point to further indirect blocks (which have their own 
-            entries for direct and indirect blocks).
-        </p>
-
-        <p>
-            The number of rows of blocks, <em>nrows</em>, in an
-            indirect block of size <em>iblock_size</em> is given by the
-            following expression:
-            <br /> <br />
-                <em>nrows</em> = (log<sub>2</sub>(<em>iblock_size</em>) -
-                    log<sub>2</sub>(<em><Starting Block Size></em> *
-                        <em><Width></em>)) + 1
-        </p>
-
-        <p>
-            The maximum number of rows of direct blocks, <em>max_dblock_rows</em>,
-            in any indirect block of a fractal heap is given by the
-            following expression:
-            <br /> <br />
-                <em>max_dblock_rows</em> =
-                    (log<sub>2</sub>(<em><Max. Direct Block Size></em>) -
-                    log<sub>2</sub>(<em><Starting Block Size></em>)) + 2
-        </p>
-
-        <p>
-            Using the computed values for <em>nrows</em> and
-            <em>max_dblock_rows</em>, along with the <em>Width</em> of the
-            doubling table, the number of direct and indirect block entries
-            (<em>K</em> and <em>N</em> in the indirect block description, below)
-            in an indirect block can be computed:
-            <br /> <br />
-                <em>K</em> = MIN(<em>nrows</em>, <em>max_dblock_rows</em>) *
-                    <em>Width</em>
-
-            <br /> <br />
-            If <em>nrows</em> is less than or equal to <em>max_dblock_rows</em>,
-            <em>N</em> is 0.  Otherwise, <em>N</em> is simply computed:
-            <br /> <br />
-                <em>N</em> = <em>K</em> - (<em>max_dblock_rows</em> *
-                    <em>Width</em>)
-        </p>
-
-        <p>
-            The size indirect blocks on disk is determined by the number
-            of rows in the indirect block (computed above).  The size of direct
-            blocks on disk is exactly the size of the block in the doubling
-            table.
-        </p>
-
-    <div align="center">
-      <table class="format">
-        <caption>
-          Fractal Heap Header
-        </caption>
-
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-        </tr>
-
-        <tr>
-          <td colspan="4">Signature</td>
-        </tr>
-          
         <tr>
           <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
-
-        <tr>
-          <td colspan="2">Heap ID Length</td>
-          <td colspan="2">I/O Filters’ Encoded Length</td>
-        </tr>
-          
-        <tr>
-          <td>Flags</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
-
-        <tr>
-          <td colspan="4">Maximum Size of Managed Objects</td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Next Huge Object ID<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />v2 B-tree Address of Huge Objects<sup>O</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Amount of Free Space in Managed Blocks<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Address of Managed Block Free Space Manager<sup>O</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Amount of Managed Space in Heap<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Amount of Allocated Managed Space in Heap<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Offset of Direct Block Allocation Iterator in Managed Space<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Number of Managed Objects in Heap<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Size of Huge Objects in Heap<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Number of Huge Objects in Heap<sup>L</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Size of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Number of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Num Entries<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">Table Width</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Source Filename #1 <em>(variable size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Starting Block Size<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Source Dataset #1 <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Maximum Direct Block Size<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Source Selection #1 <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">Maximum Heap Size</td>
-          <td colspan="2">Starting # of Rows in Root Indirect Block</td>
+          <td colspan="4"><br />Virtual Selection #1 <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
-        <tr>
-          <td colspan="4"><br />Address of Root Block<sup>O</sup><br /><br /></td>
-        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
 
         <tr>
-          <td colspan="2">Current # of Rows in Root Indirect Block</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Source Filename #n <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Size of Filtered Root Direct Block <em>(optional)</em><sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Source Dataset #n <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4">I/O Filter Mask<em> (optional)</em></td>
+          <td colspan="4"><br />Source Selection #n <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4">I/O Filter Information<em> (optional, variable size)</em></td>
+          <td colspan="4"><br />Virtual Selection #n <em>(variable 
+          size)</em><br /><br /></td>
         </tr>
 
         <tr>
@@ -4258,17 +4577,12 @@ III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -4276,800 +4590,670 @@ III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
-        <tr>
+        <caption>
+          Fields: Global Heap Block for Virtual Dataset
+        </caption>
+	<tr>
           <th width="40%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Signature</p></td>
-          <td>
-            <p>The ASCII character string “<code>FRHP</code>”
-            is used to indicate the
-            beginning of a fractal heap header.  This gives file consistency
-            checking utilities a better chance of reconstructing a
-            damaged file.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
           <td><p>Version</p></td>
           <td>
-            <p>This document describes version 0.</p>
+            <p>The version number for the block; the value is 0.</p>
           </td>
         </tr>
 
-        <tr>
-          <td><p>Heap ID Length</p></td>
-          <td>
-            <p>This is the length in bytes of heap object IDs for this heap.</p>
+	<tr>
+          <td><p>Num Entries</p></td>
+          <td><p>The number of entries in the block.</p>
           </td>
         </tr>
 
         <tr>
-          <td><p>I/O Filters’ Encoded Length</p></td>
-        <td>
-	    <p>This is the size in bytes of the encoded <em>I/O Filter Information</em>.
+          <td><p>Source Filename #n</p></td>
+	  <td>
+	    <p>The source file name where the source dataset is located.
             </p>
-        </td>
+	  </td>
         </tr>
 
-        <tr>
-        <td><p>Flags</p></td>
-        <td>
-            <p>This field is the heap status flag and is a bit field 
-            indicating additional information about the fractal heap.
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit(s)</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>If set, the ID value to use for huge object has wrapped
-                    around.  If the value for the <em>Next Huge Object ID</em>
-                    has wrapped around, each new huge object inserted into the
-                    heap will require a search for an ID value.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>If set, the direct blocks in the heap are checksummed.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2-7</code></td>
-                  <td>Reserved</td>
-                </tr>
-            </table></p>
-            
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Source Dataset #n</p></td>
+	  <td><p>The source dataset name that is mapped to the 
+      virtual dataset.</p></td>
+	</tr>
 	
-        <tr>
-        <td><p>Maximum Size of Managed Objects</p></td>
-        <td>
-	    <p>This is the maximum size of managed objects allowed in the heap.
-        Objects greater than this this are ‘huge’ objects and will be
-        stored in the file directly, rather than in a direct block for
-        the heap.
+	<tr>
+	  <td><p>Source Selection #n</p></td>
+	  <td>
+	    <p>The <a href="#DataspaceSEL">dataspace selection</a> in the 
+        source dataset that is mapped to the virtual selection.
 	    </p>
-        </td>
-        </tr>
+	  </td>
+	</tr>
 
-        <tr>
-        <td><p>Next Huge Object ID</p></td>
-        <td>
-	    <p>This is the next ID value to use for a huge object in the heap.
+	<tr>
+	  <td><p>Virtual Selection #n</p></td>
+	  <td>
+	    <p>This is the <a href="#DataspaceSEL">dataspace selection</a> in the virtual dataset that is 
+		mapped to the source selection.
 	    </p>
-        </td>
-        </tr>
+	  </td>
+	</tr>
 
         <tr>
-        <td><p>v2 B-tree Address of Huge Objects</p></td>
-        <td>
-	    <p>This is the address of the <a href="#V2Btrees">v2 B-tree</a>
-        used to track huge objects in the heap.  The type of records
-        stored in the <em>v2 B-tree</em> will
-        be determined by whether the address & length of a huge object
-        can fit into a heap ID (if yes, it is a “directly” accessed
-        huge object) and whether there is a filter used on objects
-        in the heap.
-	    </p>
-        </td>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the block.</p>
+          </td>
         </tr>
 
-        <tr>
-        <td><p>Amount of Free Space in Managed Blocks</p></td>
-        <td>
-	    <p>This is the total amount of free space in managed direct blocks
-                (in bytes).
-	    </p>
-        </td>
-        </tr>
-
-        <tr>
-          <td><p>Address of Managed Block Free Space Manager</p></td>
-          <td>
-	      <p>This is the address of the
-          <em><a href="#FreeSpaceManager">Free-space Manager</a></em> for
-          managed blocks.
-          </p>
-          </td>
-        </tr>
+      </table>
+    </div>
 
-        <tr>
-        <td><p>Amount of Managed Space in Heap</p></td>
-	    <td>
-	    <p>This is the total amount of managed space in the heap (in bytes),
-        essentially the upper bound of the heap’s linear address space.
-	    </p>
-        </td>
-        </tr>
+    <br />
+    <br />
+    <br />
+    <a name="DataspaceSEL">
+    <div align="center">
+      <table class="format">
+	<caption>
+	  Layout: Dataspace Selection
+	</caption>
 
 	<tr>
-          <td><p>Amount of Allocated Managed Space in Heap</p></td>
-	  <td>
-	    <p>This is the total amount of managed space (in bytes) actually
-                allocated in
-                the heap.  This can be less than the <em>Amount of Managed Space
-                in Heap</em> field, if some direct blocks in the heap’s linear
-                address space are not allocated.
-	    </p>
-	  </td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-          <td><p>Offset of Direct Block Allocation Iterator in Managed Space</p></td>
-	  <td>
-	    <p>This is the linear heap offset where the next direct
-                block should be allocated at (in bytes).  This may be less than
-                the <em>Amount of Managed Space in Heap</em> value because the
-                heap’s address space is increased by a “row” of direct blocks
-                at a time, rather than by single direct block increments.
-	    </p>
-	  </td>
+	  <td colspan="4">Selection Type</td>
 	</tr>
+	<tr>
+          <td colspan="4"><br />Selection Info (<em>variable 
+          size</em>)<br /><br /></td>
+        </tr>
+
+      </table>
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+	<caption>
+	  Fields: Dataspace Selection
+	</caption>
 	<tr>
-          <td><p>Number of Managed Objects in Heap</p></td>
-	  <td>
-	    <p>This is the number of managed objects in the heap.
-	    </p>
-	  </td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-          <td><p>Size of Huge Objects in Heap</p></td>
+	  <td><p>Selection Type</p></td>
 	  <td>
-	    <p>This is the total size of huge objects in the heap (in bytes).
-	    </p>
-	  </td>
+	    <p>There are 4 types of selection:
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Value</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td>H5S_SEL_NONE: Nothing selected
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td>H5S_SEL_POINTS: Sequence of points selected
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td>H5S_SEL_HYPER: Hyperslab selected
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>3</code></td>
+		  <td>H5S_SEL_ALL: Entire extent selected
+                  </td>
+		</tr>
+	      </table>
+          </td>
+
 	</tr>
 
 	<tr>
-          <td><p>Number of Huge Objects in Heap</p></td>
+	  <td><p>Selection Info</p></td>
 	  <td>
-	    <p>This is the number of huge objects in the heap.
-	    </p>
-	  </td>
+	    <p>
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Value</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td><a href="#SelNONE">H5S_SEL_NONE</a>
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td><a href="#SelPOINTS">H5S_SEL_POINTS</a>
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td><a href="#SelHYPER">H5S_SEL_HYPER</a>
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>3</code></td>
+		  <td><a href="#SelALL">H5S_SEL_ALL</a>
+                  </td>
+		</tr>
+	      </table>
+          </td>
+
 	</tr>
+      </table>
+    </div>
+
+
+    <br />
+    <br />
+    <br />
+    <a name="SelNONE">
+    <div align="center">
+      <table class="format">
+	<caption>
+	  Layout: Selection Info for H5S_SEL_NONE
+	</caption>
 
 	<tr>
-          <td><p>Size of Tiny Objects in Heap</p></td>
-	  <td>
-	    <p>This is the total size of tiny objects that are packed in heap
-                IDs (in bytes).
-	    </p>
-	  </td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-          <td><p>Number of Tiny Objects in Heap</p></td>
-	  <td>
-	    <p>This is the number of tiny objects that are packed in heap IDs.
-	    </p>
-	  </td>
+	  <td colspan="4">Version</td>
 	</tr>
-
 	<tr>
-          <td><p>Table Width</p></td>
-	  <td>
-	    <p>This is the number of columns in the doubling table for managed
-                blocks.  This value must be a power of two.
-	    </p>
-	  </td>
+	  <td colspan="4"><br />Reserved <em>(zero, 8 bytes)</em><br /><br /></td>
 	</tr>
 
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+	<caption>
+        Fields: Selection Info for H5S_SEL_NONE
+	</caption>
 	<tr>
-          <td><p>Starting Block Size</p></td>
-	  <td>
-	    <p>This is the starting block size to use in the doubling table for 
-	       managed blocks (in bytes).  This value must be a power of two.
-	    </p>
-	  </td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-          <td><p>Maximum Direct Block Size</p></td>
-	  <td>
-	    <p>This is the maximum size allowed for a managed direct block.
-                Objects inserted into the heap that are larger than this value
-                (less the # of bytes of direct block prefix/suffix)
-                are stored as ‘huge’ objects.  This value must be a power of
-                two.
-	    </p>
-	  </td>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for the H5S_SEL_NONE Selection Info; 
+      the value is 1.</p></td>
 	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <a name="SelPOINTS">
+    <div align="center">
+      <table class="format">
+	<caption>
+	  Layout: Selection Info for H5S_SEL_POINTS
+	</caption>
 
 	<tr>
-          <td><p>Maximum Heap Size</p></td>
-	  <td>
-	    <p>This is the maximum size of the heap’s linear address space for
-                managed objects (in bytes).  The value stored is the log2 of
-                the actual value, that is: the # of bits of the address space.
-                ‘Huge’ and ‘tiny’ objects are not counted in this value, since
-                they do not store objects in the linear address space of the
-                heap.
-	    </p>
-	  </td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-          <td><p>Starting # of Rows in Root Indirect Block</p></td>
-	  <td>
-	    <p>This is the starting number of rows for the root indirect block.
-	       A value of 0 indicates that the root indirect block will have
-               the maximum number of rows needed to address the heap’s <em>Maximum
-               Heap Size</em>.
-	    </p>
-	  </td>
+	  <td colspan="4">Version</td>
 	</tr>
-
 	<tr>
-          <td><p>Address of Root Block</p></td>
-	  <td>
-	    <p>This is the address of the root block for the heap.  It can
-                be the <a href="#UndefinedAddress">undefined address</a> if
-                there is no data in the heap.  It either points to a direct
-                block (if the <em>Current # of Rows in the Root Indirect Block</em>
-                value is 0), or an indirect block.
-	    </p>
-	  </td>
+          <td colspan="4">Reserved <em>(zero)</em></td>
 	</tr>
 
 	<tr>
-          <td><p>Current # of Rows in Root Indirect Block</p></td>
-	  <td>
-	    <p>This is the current number of rows in the root indirect block.
-		A value of 0 indicates that <em>Address of Root Block</em>
-                points to direct block instead of indirect block.
-	    </p>
-	  </td>
+	  <td colspan="4">Length</td>
 	</tr>
-
 	<tr>
-          <td><p>Size of Filtered Root Direct Block</p></td>
-	  <td>
-	    <p>This is the size of the root direct block, if filters are
-                applied to heap objects (in bytes).  This field is only
-                stored in the header if the <em>I/O Filters’ Encoded Length</em>
-                is greater than 0.
-	    </p>
-	  </td>
+	  <td colspan="4">Rank</td>
 	</tr>
-
 	<tr>
-          <td><p>I/O Filter Mask</p></td>
-	  <td>
-	    <p>This is the filter mask for the root direct block, if filters
-                are applied to heap objects.  This mask has the same format as
-                that used for the filter mask in chunked raw data records in a
-                <a href="#V1Btrees">v1 B-tree</a>.
-                This field is only
-                stored in the header if the <em>I/O Filters’ Encoded Length</em>
-                is greater than 0.
-	    </p>
-	  </td>
+	  <td colspan="4">Num Points</td>
+	</tr>
+	<tr>
+	  <td colspan="4">Point #1: coordinate #1</td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Point #1: coordinate #u</td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Point #n: coordinate #1</td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Point #n: coordinate #u</td>
 	</tr>
-
-        <tr>
-          <td><p>I/O Filter Information</p></td>
-	  <td>
-	    <p>This is the I/O filter information encoding direct blocks and
-                huge objects, if filters are applied to heap objects.  This
-                field is encoded as a <a href="#FilterMessage">Filter Pipeline</a>
-                message.
-                The size of this field is determined by <em>I/O Filters’
-                Encoded Length</em>.
-	    </p>
-	  </td>
-        </tr>
-
-        <tr>
-          <td><p>Checksum</p></td>
-          <td>
-            <p>This is the checksum for the header.</p>
-          </td>
-        </tr>
 
       </table>
     </div>
 
     <br />
-    <br />
     <div align="center">
-      <table class="format">
-        <caption>
-          Fractal Heap Direct Block
-        </caption>
+      <table class="desc">
+	<caption>
+	    Fields: Selection Info for H5S_SEL_POINTS
+	</caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-        </tr>
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for the H5S_SEL_POINTS Selection Info; 
+      the value is 1.</p></td>
+	</tr>
 
-        <tr>
-          <td colspan="4">Signature</td>
-        </tr>
-          
-        <tr>
-          <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
+	<tr>
+	  <td><p>Length</p></td>
+	  <td><p>The size in bytes from <em>Length</em> to the end of the 
+      Selection Info.</td>
+	</tr>
 
-        <tr>
-          <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
-        </tr>
+	<tr>
+	  <td><p>Rank</p></td>
+	  <td><p>The number of dimensions.</p></td>
+	</tr>
+	<tr>
+	  <td><p>Num Points</p></td>
+	  <td><p>The number of points in the selection.</p></td>
+	</tr>
+	<tr>
+	  <td><p>Point #n: coordinate #u</p></td>
+	  <td><p>The array of points in the selection. The points selected 
+      are #1 to #n where n is <em>Num Points</em>. The list of 
+      coordinates for each point are #1 to #u where u is 
+      <em>Rank</em>.</p></td>
+	</tr>
+      </table>
+    </div>
 
-        <tr>
-          <td colspan="4">Block Offset <em>(variable size)</em></td>
-        </tr>
-          
-        <tr>
-          <td colspan="4">Checksum <em>(optional)</em></td>
-        </tr>
+    <br />
+    <br />
+    <br />
+    <a name="SelHYPER">
+    <div align="center">
+      <table class="format">
+	<caption>
+	  Layout: Selection Info for H5S_SEL_HYPER
+	</caption>
 
-        <tr>
-          <td colspan="4"><br />Object Data <em>(variable size)</em><br /><br /></td>
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Version</td>
+	</tr>
+	<tr>
+          <td colspan="4"><br />Hyperslab Selection Info 
+          (<em>variable size</em>)<br /><br /></td>
         </tr>
-          
-      </table>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
       </table>
-
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+	<caption>
+	    Fields: Selection Info for H5S_SEL_HYPER
+	</caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-        </tr>
+	</tr>
 
-        <tr>
-          <td><p>Signature</p></td>
-          <td>
-            <p>The ASCII character string “<code>FHDB</code>”
-            is used to indicate the
-            beginning of a fractal heap direct block.  This gives file consistency
-            checking utilities a better chance of reconstructing a
-            damaged file.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
-          <td><p>Version</p></td>
-          <td>
-            <p>This document describes version 0.</p>
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for the H5S_SEL_HYPER Selection Info.
+	    The value is either 1 or 2.</p></td>
+	</tr>
 
-        <tr>
-          <td><p>Heap Header Address</p></td>
-          <td>
-            <p>This is the address for the fractal heap header that this
-                block belongs to.  This field is principally used for file
-                integrity checking.
-            </p>
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Hyperslab Selection Info</p></td>
+	  <td><p>Depending on <em>version</em>:
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Version</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-        <tr>
-          <td><p>Block Offset</p></td>
-          <td>
-            <p>This is the offset of the block within the fractal heap’s
-                address space (in bytes).  The number of bytes used to encode
-                this field is the <em>Maximum Heap Size</em> (in the heap’s
-                header) divided by 8 and rounded up to the next highest integer,
-                for values that are not a multiple of 8.  This value is
-                principally used for file integrity checking.
-            </p>
-          </td>
-        </tr>
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td><a href="#SelHYPERV1">Version 1 hyperslab selection info</a> for dataspace without H5S_UNLIMITED
+                  </td>
+		</tr>
 
-        <tr>
-          <td><p>Checksum</p></td>
-          <td>
-            <p>This is the checksum for the direct block.</p>
-	    <p>This field is only present if bit 1 of <em>Flags</em> in the
-                heap’s header is set.</p>
-          </td>
-        </tr>
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td><a href="#SelHYPERV2">Version 2 hyperslab selection info</a> for dataspace with H5S_UNLIMITED
+                  </td>
+		</tr>
 
-        <tr>
-          <td><p>Object Data</p></td>
-          <td>
-            <p>This section of the direct block stores the actual data for
-                objects in the heap.  The size of this section is determined by
-                the direct block’s size minus the size of the other fields
-                stored in the direct block (for example, the <em>Signature</em>,
-                <em>Version</em>, and others including the <em>Checksum</em> if it is
-                present).
-            </p>
-          </td>
-        </tr>
+	      </table>
+	  </td>
+	</tr>
 
       </table>
     </div>
 
     <br />
     <br />
+    <br />
+    <a name="SelHYPERV1">
     <div align="center">
       <table class="format">
-        <caption>
-          Fractal Heap Indirect Block
-        </caption>
-
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-        </tr>
-
-        <tr>
-          <td colspan="4">Signature</td>
-        </tr>
-          
-        <tr>
-          <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4">Block Offset <em>(variable size)</em></td>
-        </tr>
+	<caption>
+	  Layout: Version 1 Hyperslab Selection Info
+	</caption>
 
-        <tr>
-          <td colspan="4"><br />Child Direct Block #0 Address<sup>O</sup><br /><br /></td>
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Size of Filtered Direct Block #0 <em>(optional)</em> <sup>L</sup><br /><br /></td>
+          <td colspan="4">Reserved</td>
 	</tr>
 	<tr>
-	  <td colspan="4">Filter Mask for Direct Block #0 <em>(optional)</em></td>
+	  <td colspan="4">Length</td>
 	</tr>
-
-        <tr>
-          <td colspan="4"><br />Child Direct Block #1 Address<sup>O</sup><br /><br /></td>
+	<tr>
+	  <td colspan="4">Rank</td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Size of Filtered Direct Block #1 <em>(optional)</em><sup>L</sup><br /><br /></td>
+	  <td colspan="4">Num Blocks</td>
 	</tr>
 	<tr>
-	  <td colspan="4">Filter Mask for Direct Block #1 <em>(optional)</em></td>
+	  <td colspan="4"><br />Start offset #1 for block #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
+	<tr>
+	  <td colspan="4"><br />Start offset #n for block #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
 
 	<tr>
-	    <td colspan="4">...</td>
+	  <td colspan="4"><br />End offset #1 for block #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
+	<tr>
+	  <td colspan="4"><br />End offset #n for block #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
 
-        <tr>
-          <td colspan="4"><br />Child Direct Block #K-1 Address<sup>O</sup><br /><br /></td>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
 	<tr>
-	  <td colspan="4"><br />Size of Filtered Direct Block #K-1 <em>(optional)</em><sup>L</sup><br /><br /></td>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
 	<tr>
-	  <td colspan="4">Filter Mask for Direct Block #K-1 <em>(optional)</em></td>
-	</tr>
-
-        <tr>
-          <td colspan="4"><br />Child Indirect Block #0 Address<sup>O</sup><br /><br /></td>
-	</tr>
-
-        <tr>
-          <td colspan="4"><br />Child Indirect Block #1 Address<sup>O</sup><br /><br /></td>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">...</td>
+	  <td colspan="4"><br />Start offset #1 for block #u <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
+	<tr>
+	  <td colspan="4"><br />Start offset #n for block #u <em>(8 bytes)</em><br /><br /></td>
+        </tr>
 
-        <tr>
-          <td colspan="4"><br />Child Indirect Block #N-1 Address<sup>O</sup><br /><br /></td>
+	<tr>
+	  <td colspan="4"><br />End offset #1 for block #u <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
-          
-        <tr>
-	  <td colspan="4">Checksum</td>
+	<tr>
+	  <td colspan="4"><br />End offset #n for block #u <em>(8 bytes)</em><br /><br /></td>
         </tr>
-      </table>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
       </table>
-
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Version 1 Hyperslab Selection Info
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-        </tr>
+	</tr>
 
-        <tr>
-          <td><p>Signature</p></td>
-          <td>
-            <p>The ASCII character string “<code>FHIB</code>” is used to
-                indicate the beginning of a fractal heap indirect block.  This
-                gives file consistency checking utilities a better chance of
-                reconstructing a damaged file.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
-          <td><p>Version</p></td>
-          <td>
-            <p>This document describes version 0.</p>
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Length</p></td>
+	  <td><p>The size in bytes from the field <em>Length</em> to the 
+      end of the Selection Info.</td>
+	</tr>
 
-        <tr>
-          <td><p>Heap Header Address</p></td>
-          <td>
-            <p>This is the address for the fractal heap header that this
-                block belongs to.  This field is principally used for file
-                integrity checking.
-            </p>
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Rank</p></td>
+	  <td><p>The number of dimensions in the dataspace.</p></td>
+	</tr>
 
-        <tr>
-          <td><p>Block Offset</p></td>
-          <td>
-            <p>This is the offset of the block within the fractal heap’s
-                address space (in bytes).  The number of bytes used to encode
-                this field is the <em>Maximum Heap Size</em> (in the heap’s
-                header) divided by 8 and rounded up to the next highest integer,
-                for values that are not a multiple of 8.  This value is
-                principally used for file integrity checking.
-            </p>
-          </td>
-        </tr>
+	<tr>
+	  <td><p>Num Blocks</p></td>
+	  <td><p>The number of blocks in the selection.</p></td>
+	</tr>
 
-        <tr>
-          <td><p>Child Direct Block #K Address</p></td>
-          <td>
-	    <p>This field is the address of the child direct block.
-                The size of the [uncompressed] direct block can be computed by
-                its offset in the heap’s linear address space.  
-            </p>
-          </td>
-        </tr>
+    <tr>
+      <td><p>Start offset #n for block #u</p></td>
+      <td><p>The offset #n of the starting element in block #u. #n is 
+      from 1 to <em>Rank</em>. #u is from 1 to <em>Num Blocks</em> 
+      moving from the fastest changing dimension to the slowest 
+      changing dimension.
+        </p></td>
+    </tr>
+
+    <tr>
+      <td><p>End offset #n for block #u</p></td>
+      <td><p>The offset #n of the ending element in block #u. #n is 
+      from 1 to <em>Rank</em>. #u is from 1 to <em>Num Blocks</em> 
+      moving from the fastest changing dimension to the slowest 
+      changing dimension.
+      </p></td>
+    </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <a name="SelHYPERV2">
+    <div align="center">
+      <table class="format">
+	<caption>
+	  Layout: Version 2 Hyperslab Selection Info
+	</caption>
 
 	<tr>
-	  <td><p>Size of Filtered Direct Block #K</p></td>
-	  <td>
-	    <p>This is the size of the child direct block after passing through
-                the I/O filters defined for this heap (in bytes).  If no I/O
-                filters are present for this heap, this field is not present.
-            </p>
-	  </td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
+
 	<tr>
-	  <td><p>Filter Mask for Direct Block #K</p></td>
-	  <td>
-            <p>This is the I/O filter mask for the filtered direct block.
-                This mask has the same format as that used for the filter mask
-                in chunked raw data records in a <a href="#V1Btrees">v1 B-tree</a>.
-                If no I/O filters are present for this heap, this field is not
-                present.
-            </p>
-	  </td>
+	  <td>flags</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Length</td>
+	</tr>
+	<tr>
+	  <td colspan="4">Rank</td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Start #1 <em>(8 bytes)</em><br /><br /></td>
         </tr>
-
-        <tr>
-          <td><p>Child Indirect Block #N Address</p></td>
-          <td>
-	    <p>This field is the address of the child indirect block.
-                The size of the indirect block can be computed by
-                its offset in the heap’s linear address space.  
-            </p>
-          </td>
+	<tr>
+	  <td colspan="4"><br />Stride #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4"><br />Count #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4"><br />Block #1 <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Start #n <em>(8 bytes)</em><br /><br /></td>
         </tr>
 
-        <tr>
-          <td><p>Checksum</p></td>
-          <td>
-            <p>This is the checksum for the indirect block.</p>
-          </td>
+	<tr>
+	  <td colspan="4"><br />Stride #n <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4"><br />Count #n <em>(8 bytes)</em><br /><br /></td>
+        </tr>
+	<tr>
+	  <td colspan="4"><br />Block #n <em>(8 bytes)</em><br /><br /></td>
         </tr>
 
       </table>
-
     </div>
 
     <br />
-    <p>An object in the fractal heap is identified by means of a fractal heap ID, 
-	which encodes information to locate the object in the heap.
-	Currently, the fractal heap stores an object in one of three ways,
-        depending on the object’s size:</p>
-
     <div align="center">
-      <table class="list80">
-        <tr>
-          <th width="20%">Type</th>
-          <th width="80%" align="left">Description</th>
-        </tr>
-
-        <tr>
-          <td align="center">Tiny</td>
-          <td>
-            <p>When an object is small enough to be encoded in the heap ID, the
-            object’s data is embedded in the fractal heap ID itself.  There are
-            2 sub-types for this type of object: normal and extended.  The
-            sub-type for tiny heap IDs depends on whether the heap ID is large
-            enough to store objects greater than 16 bytes or not.  If the
-            heap ID length is 18 bytes or smaller, the ‘normal’ tiny heap ID
-            form is used.  If the heap ID length is greater than 18 bytes in
-            length, the “extented” form is used.  See format description below
-            for both sub-types.
-            </p>
-          </td>
-        </tr>
+      <table class="desc">
+    <caption>
+	Fields: Version 2 Hyperslab Selection Info
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
-        <tr>
-          <td align="center">Huge</td>
-          <td>
-            <p>When the size of an object is larger than <em>Maximum Size of
-            Managed Objects</em> in the <em>Fractal Heap Header</em>, the
-            object’s data is stored on its own in the file and the object
-            is tracked/indexed via a version 2 B-tree.  All huge objects
-            for a particular fractal heap use the same v2 B-tree.  All huge
-            objects for a particular fractal heap use the same format for
-            their huge object IDs.
-            </p>
+	<tr>
+	  <td><p>Length</p></td>
+	  <td><p>The size in bytes from the field <em>Length</em> to the 
+      end of the Selection Info.</td>
+	</tr>
 
-            <p>Depending on whether the IDs for a heap are large enough to hold
-            the object’s retrieval information and whether I/O pipeline filters
-            are applied to the heap’s objects, 4 sub-types are derived for
-            huge object IDs for this heap:</p>
+	<tr>
+	  <td><p>Rank</p></td>
+	  <td><p>The number of dimensions in the dataspace.</td>
+	</tr>
 
-            <div align="center">
-              <table class="list">
-                <tr>
-                  <th align="left" width="35%">Sub-type</th>
-                  <th align="left">Description</th>
-                </tr>
+    <tr>
+      <td><p>Start #n</p></td>
+      <td><p>The offset of the starting element in the block. #n is 
+      from 1 to <em>Rank</em>.
+      </p></td>
+    </tr>
 
-                <tr>
-                  <td align="left">Directly accessed, non-filtered</td>
-                  <td>
-                    <p>The object’s address and length are embedded in the
-                    fractal heap ID itself and the object is directly accessed
-                    from them.  This allows the object to be accessed without
-                    resorting to the B-tree.
-                    </p>
-                  </td>
-                </tr>
+    <tr>
+      <td><p>Stride #n</p></td>
+      <td><p>The number of elements to move in each dimension. #n is 
+      from 1 to <em>Rank</em>.
+      </p></td>
+    </tr>
 
-                <tr>
-                  <td align="left">Directly accessed, filtered</td>
-                  <td>
-                    <p>The filtered object’s address, length, filter mask and
-                    de-filtered size are embedded in the fractal heap ID itself
-                    and the object is accessed directly with them.  This allows
-                    the object to be accessed without resorting to the B-tree.
-                    </p>
-                  </td>
-                </tr>
+    <tr>
+      <td><p>Count #n</p></td>
+      <td><p>The number of blocks to select in each dimension. #n is 
+      from 1 to <em>Rank</em>.
+      </p></td>
+    </tr>
 
-                <tr>
-                  <td align="left">Indirectly accessed, non-filtered</td>
-                  <td>
-                    <p>The object is located by using a B-tree key embedded in
-                    the fractal heap ID to retrieve the address and length from
-                    the version 2 B-tree for huge objects.  Then, the address
-                    and length are used to access the object.
-                    </p>
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="left">Indirectly accessed, filtered</td>
-                  <td>
-                    <p>The object is located by using a B-tree key embedded in
-                    the fractal heap ID to retrieve the filtered object’s
-                    address, length, filter mask and de-filtered size from the
-                    version 2 B-tree for huge objects.  Then, this information
-                    is used to access the object.
-                    </p>
-                  </td>
-                </tr>
-              </table>
-            </div>
-
-          </td>
-        </tr>
-
-        <tr>
-          <td align="center">Managed</td>
-          <td>
-            <p>When the size of an object does not meet the above two
-            conditions, the object is stored and managed via the direct and
-            indirect blocks based on the doubling table.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-    
-
-    <p>The specific format for each type of heap ID is described below:
-    </p>
+    <tr>
+      <td><p>Block #n</p></td>
+      <td><p>The size (in elements) of each block in each dimension. 
+      #n is from 1 to <em>Rank</em>.
+      </p></td>
+    </tr>
+      </table>
+    </div>
 
+    <br />
+    <br />
+    <br />
+    <a name="SelALL">
     <div align="center">
       <table class="format">
-        <caption>Fractal Heap ID for Tiny Objects (sub-type 1 - ‘Normal’)
-        </caption>
+	<caption>
+	  Layout: Selection Info for H5S_SEL_ALL
+	</caption>
 
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
-        <tr>
-          <td>Version, Type & Length</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Data <em>(variable size)</em></td>
-        </tr>
+	<tr>
+	  <td colspan="4">Version</td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Reserved <em>(zero, 
+      8 bytes)</em><br /><br /></td>
+	</tr>
 
       </table>
     </div>
@@ -5077,63 +5261,143 @@ III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
-	<tr>
+    <caption>
+        Fields: Selection Info for H5S_SEL_ALL
+    </caption>
+    <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-        </tr>
+    </tr>
 
-        <tr>
-          <td><p>Version, Type & Length</p></td>
-          <td>
-            <p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+    <tr>
+      <td><p>Version</p></td>
+      <td><p>The version number for the H5S_SEL_ALL Selection Info; 
+      the value is 1.</p></td>
+    </tr>
+      </table>
+    </div>
 
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Tiny objects have a value of <code>2</code>.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>The length of the tiny object. The value stored 
-                  is one less than the actual length (since zero-length 
-                  objects are not allowed to be stored in the heap). 
-                  For example, an object of actual length 1 has an 
-                  encoded length of 0, an object of actual length 2 
-                  has an encoded length of 1, and so on.
-                  </td>
-                </tr>
-	    </table></p>
-            
-          </td>
-        </tr>
 
-        <tr>
-          <td><p>Data</p></td>
-          <td>
-            <p>This is the data for the object.
-            </p>
-          </td>
-        </tr>
 
-      </table>
-    </div>
 
-    <br />
-    <br />
+
+
+
+
+
+
+
+<h3><a name="FractalHeap">
+III.G. Disk Format: Level 1G - Fractal Heap</a></h3>
+
+        <p>
+	    Each fractal heap consists of a header and zero or more direct and
+            indirect blocks (described below).  The header contains general
+            information as well as
+            initialization parameters for the doubling table.  The <em>Root
+            Block Address</em> in the header points to the first direct or
+            indirect block in the heap.
+        </p>
+
+        <p>
+            Fractal heaps are based on a data structure called a <em>doubling
+            table</em>.  A doubling table provides a mechanism for quickly
+            extending an array-like data structure that minimizes the number of
+            empty blocks in the heap, while retaining very fast lookup of any
+            element within the array.  More information on fractal heaps and
+            doubling tables can be found in the RFC 
+            “<a href="Supplements/FractalHeap/PrivateHeap.pdf">Private
+            Heaps in HDF5</a>.”
+        </p>
+
+        <p>
+            The fractal heap implements the doubling table structure with
+            indirect and direct blocks.
+            Indirect blocks in the heap do not actually contain data for
+            objects in the heap, their “size” is abstract - 
+            they represent the indexing structure for locating the
+            direct blocks in the doubling table.
+            Direct blocks
+            contain the actual data for objects stored in the heap.
+        </p>
+
+        <p>
+            All indirect blocks have a constant number of block entries in each
+            row, called the <em>width</em> of the doubling table (stored in
+            the heap header).
+
+            The number
+            of rows for each indirect block in the heap is determined by the
+            size of the block that the indirect block represents in the
+            doubling table (calculation of this is shown below) and is
+            constant, except for the “root”
+            indirect block, which expands and shrinks its number of rows as
+            needed. 
+        </p>
+
+        <p>
+            Blocks in the first <em>two</em> rows of an indirect block 
+            are <em>Starting Block Size</em> number of bytes in size, 
+            and the blocks in each subsequent row are twice the size of 
+            the blocks in the previous row. In other words, blocks in 
+            the third row are twice the <em>Starting Block Size</em>, 
+            blocks in the fourth row are four times the 
+            <em>Starting Block Size</em>, and so on.  Entries for
+            blocks up to the <em>Maximum Direct Block Size</em> point to 
+            direct blocks, and entries for blocks greater than that size 
+            point to further indirect blocks (which have their own 
+            entries for direct and indirect blocks).
+        </p>
+
+        <p>
+            The number of rows of blocks, <em>nrows</em>, in an
+            indirect block of size <em>iblock_size</em> is given by the
+            following expression:
+            <br /> <br />
+                <em>nrows</em> = (log<sub>2</sub>(<em>iblock_size</em>) -
+                    log<sub>2</sub>(<em><Starting Block Size></em> *
+                        <em><Width></em>)) + 1
+        </p>
+
+        <p>
+            The maximum number of rows of direct blocks, <em>max_dblock_rows</em>,
+            in any indirect block of a fractal heap is given by the
+            following expression:
+            <br /> <br />
+                <em>max_dblock_rows</em> =
+                    (log<sub>2</sub>(<em><Max. Direct Block Size></em>) -
+                    log<sub>2</sub>(<em><Starting Block Size></em>)) + 2
+        </p>
+
+        <p>
+            Using the computed values for <em>nrows</em> and
+            <em>max_dblock_rows</em>, along with the <em>Width</em> of the
+            doubling table, the number of direct and indirect block entries
+            (<em>K</em> and <em>N</em> in the indirect block description, below)
+            in an indirect block can be computed:
+            <br /> <br />
+                <em>K</em> = MIN(<em>nrows</em>, <em>max_dblock_rows</em>) *
+                    <em>Width</em>
+
+            <br /> <br />
+            If <em>nrows</em> is less than or equal to <em>max_dblock_rows</em>,
+            <em>N</em> is 0.  Otherwise, <em>N</em> is simply computed:
+            <br /> <br />
+                <em>N</em> = <em>K</em> - (<em>max_dblock_rows</em> *
+                    <em>Width</em>)
+        </p>
+
+        <p>
+            The size indirect blocks on disk is determined by the number
+            of rows in the indirect block (computed above).  The size of direct
+            blocks on disk is exactly the size of the block in the doubling
+            table.
+        </p>
+
     <div align="center">
       <table class="format">
-        <caption>Fractal Heap ID for Tiny Objects (sub-type 2 - ‘Extended’)
+        <caption>
+            Layout: Fractal Heap Header
         </caption>
 
         <tr>
@@ -5141,220 +5405,139 @@ III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
           <th>byte</th>
           <th>byte</th>
           <th>byte</th>
-	</tr>
+        </tr>
 
         <tr>
-          <td>Version, Type & Length</td>
-          <td>Extended Length</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4">Data <em>(variable size)</em></td>
+          <td colspan="2">Heap ID Length</td>
+          <td colspan="2">I/O Filters’ Encoded Length</td>
+        </tr>
+          
+        <tr>
+          <td>Flags</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
-      </table>
-    </div>
+        <tr>
+          <td colspan="4">Maximum Size of Managed Objects</td>
+        </tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+        <tr>
+          <td colspan="4"><br />Next Huge Object ID<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>Version, Type & Length</p></td>
-          <td>
-            <p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Tiny objects have a value of <code>2</code>.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>These 4 bits, together with the next byte, form an
-                    unsigned 12-bit integer for holding the length of the
-                    object.  These 4-bits are bits 8-11 of the 12-bit integer.
-                    See description for the <em>Extended Length</em> field below.
-                  </td>
-                </tr>
-	    </table></p>
-            
-          </td>
+          <td colspan="4"><br />v2 B-tree Address of Huge Objects<sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>Extended Length</p></td>
-          <td>
-            <p>This byte, together with the 4 bits in the previous byte, 
-            forms an unsigned 12-bit integer for holding the length of 
-            the tiny object.  These 8 bits are bits 0-7 of the 12-bit 
-            integer formed. The value stored is one less than the actual 
-            length (since zero-length objects are not allowed to be 
-            stored in the heap). For example, an object of actual length 
-            1 has an encoded length of 0, an object of actual length 
-            2 has an encoded length of 1, and so on.
-            </p>
-          </td>
+          <td colspan="4"><br />Amount of Free Space in Managed Blocks<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>Data</p></td>
-          <td>
-            <p>This is the data for the object.
-            </p>
-          </td>
+          <td colspan="4"><br />Address of Managed Block Free Space Manager<sup>O</sup><br /><br /></td>
         </tr>
 
-      </table>
-    </div>
+        <tr>
+          <td colspan="4"><br />Amount of Managed Space in Heap<sup>L</sup><br /><br /></td>
+        </tr>
 
+        <tr>
+          <td colspan="4"><br />Amount of Allocated Managed Space in Heap<sup>L</sup><br /><br /></td>
+        </tr>
 
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>Fractal Heap ID for Huge Objects (sub-type 1 & 2): indirectly accessed, non-filtered/filtered
-        </caption>
+        <tr>
+          <td colspan="4"><br />Offset of Direct Block Allocation Iterator in Managed Space<sup>L</sup><br /><br /></td>
+        </tr>
 
         <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
+          <td colspan="4"><br />Number of Managed Objects in Heap<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td>Version & Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Size of Huge Objects in Heap<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />v2 B-tree Key<sup>L</sup><em> (variable size)</em><br /><br /></td>
+          <td colspan="4"><br />Number of Huge Objects in Heap<sup>L</sup><br /><br /></td>
         </tr>
 
-      </table>
+        <tr>
+          <td colspan="4"><br />Size of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
+        </tr>
 
-      <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
-      </table>
-    </div>
+          <td colspan="4"><br />Number of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
+        </tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
         <tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+          <td colspan="2">Table Width</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td><p>Version & Type</p></td>
-          <td>
-            <p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+          <td colspan="4"><br />Starting Block Size<sup>L</sup><br /><br /></td>
+        </tr>
 
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Huge objects have a value of <code>1</code>.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>Reserved.
-                  </td>
-                </tr>
-            </table></p>
-            
-          </td>
+        <tr>
+          <td colspan="4"><br />Maximum Direct Block Size<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-            <td><p>v2 B-tree Key</p></td>
-            <td><p>This field is the B-tree key for retrieving the information
-            from the version 2 B-tree for huge objects needed to access the
-            object.  See the description of <a href="#V2Btrees">v2 B-tree</a>
-            records sub-type 1 & 2 for a description of the fields.  New key
-            values are derived from <em>Next Huge Object ID</em> in the
-            <em>Fractal Heap Header</em>.</p>
-            </td>
+          <td colspan="2">Maximum Heap Size</td>
+          <td colspan="2">Starting # of Rows in Root Indirect Block</td>
         </tr>
 
-      </table>
-    </div>
+        <tr>
+          <td colspan="4"><br />Address of Root Block<sup>O</sup><br /><br /></td>
+        </tr>
 
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>Fractal Heap ID for Huge Objects (sub-type 3): directly accessed, non-filtered
-        </caption>
+        <tr>
+          <td colspan="2">Current # of Rows in Root Indirect Block</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        </tr>
 
         <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
+          <td colspan="4"><br />Size of Filtered Root Direct Block <em>(optional)</em><sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td>Version & Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4">I/O Filter Mask<em> (optional)</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
+          <td colspan="4">I/O Filter Information<em> (optional, variable size)</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
+          <td colspan="4">Checksum</td>
         </tr>
 
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
         <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -5362,300 +5545,471 @@ III.F. Disk Format: Level 1F - Fractal Heap</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fractal Heap Header
+        </caption>
         <tr>
-          <th width="30%">Field Name</th>
+          <th width="40%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Version & Type</p></td>
+          <td><p>Signature</p></td>
           <td>
-            <p>This is a bit field with the following definition:
+            <p>The ASCII character string “<code>FRHP</code>”
+            is used to indicate the
+            beginning of a fractal heap header.  This gives file consistency
+            checking utilities a better chance of reconstructing a
+            damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Heap ID Length</p></td>
+          <td>
+            <p>This is the length in bytes of heap object IDs for this heap.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>I/O Filters’ Encoded Length</p></td>
+        <td>
+	    <p>This is the size in bytes of the encoded <em>I/O Filter Information</em>.
+            </p>
+        </td>
+        </tr>
+
+        <tr>
+        <td><p>Flags</p></td>
+        <td>
+            <p>This field is the heap status flag and is a bit field 
+            indicating additional information about the fractal heap.
             <table class="list">
                 <tr>
-                  <th width="20%" align="center">Bit</th>
+                  <th width="20%" align="center">Bit(s)</th>
                   <th width="80%" align="left">Description</th>
                 </tr>
 
                 <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
+                  <td align="center"><code>0</code></td>
+                  <td>If set, the ID value to use for huge object has wrapped
+                    around.  If the value for the <em>Next Huge Object ID</em>
+                    has wrapped around, each new huge object inserted into the
+                    heap will require a search for an ID value.
                   </td>
                 </tr>
                 <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Huge objects have a value of <code>1</code>.
+                  <td align="center"><code>1</code></td>
+                  <td>If set, the direct blocks in the heap are checksummed.
                   </td>
                 </tr>
                 <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>Reserved.
-                  </td>
+                  <td align="center"><code>2-7</code></td>
+                  <td>Reserved</td>
                 </tr>
             </table></p>
             
           </td>
         </tr>
-
+	
         <tr>
-            <td><p>Address</p></td>
-            <td><p>This field is the address of the object in the file.</p>
-            </td>
+        <td><p>Maximum Size of Managed Objects</p></td>
+        <td>
+	    <p>This is the maximum size of managed objects allowed in the heap.
+        Objects greater than this this are ‘huge’ objects and will be
+        stored in the file directly, rather than in a direct block for
+        the heap.
+	    </p>
+        </td>
         </tr>
 
         <tr>
-            <td><p>Length</p></td>
-            <td><p>This field is the length of the object in the file.</p>
-            </td>
+        <td><p>Next Huge Object ID</p></td>
+        <td>
+	    <p>This is the next ID value to use for a huge object in the heap.
+	    </p>
+        </td>
         </tr>
-      </table>
-    </div>
-
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>Fractal Heap ID for Huge Objects (sub-type 4): directly accessed, filtered
-        </caption>
 
         <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
+        <td><p>v2 B-tree Address of Huge Objects</p></td>
+        <td>
+	    <p>This is the address of the <a href="#V2Btrees">v2 B-tree</a>
+        used to track huge objects in the heap.  The type of records
+        stored in the <em>v2 B-tree</em> will
+        be determined by whether the address and length of a huge object
+        can fit into a heap ID (if yes, it is a “directly” accessed
+        huge object) and whether there is a filter used on objects
+        in the heap.
+	    </p>
+        </td>
         </tr>
 
         <tr>
-          <td>Version & Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        <td><p>Amount of Free Space in Managed Blocks</p></td>
+        <td>
+	    <p>This is the total amount of free space in managed direct blocks
+                (in bytes).
+	    </p>
+        </td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
+          <td><p>Address of Managed Block Free Space Manager</p></td>
+          <td>
+	      <p>This is the address of the
+          <em><a href="#FreeSpaceManager">Free-space Manager</a></em> for
+          managed blocks.
+          </p>
+          </td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
+        <td><p>Amount of Managed Space in Heap</p></td>
+	    <td>
+	    <p>This is the total amount of managed space in the heap (in bytes),
+        essentially the upper bound of the heap’s linear address space.
+	    </p>
+        </td>
         </tr>
 
-        <tr>
-          <td colspan="4">Filter Mask</td>
-        </tr>
+	<tr>
+          <td><p>Amount of Allocated Managed Space in Heap</p></td>
+	  <td>
+	    <p>This is the total amount of managed space (in bytes) actually
+                allocated in
+                the heap.  This can be less than the <em>Amount of Managed Space
+                in Heap</em> field, if some direct blocks in the heap’s linear
+                address space are not allocated.
+	    </p>
+	  </td>
+	</tr>
 
-        <tr>
-          <td colspan="4"><br />De-filtered Size <sup>L</sup><br /><br /></td>
-        </tr>
+	<tr>
+          <td><p>Offset of Direct Block Allocation Iterator in Managed Space</p></td>
+	  <td>
+	    <p>This is the linear heap offset where the next direct
+                block should be allocated at (in bytes).  This may be less than
+                the <em>Amount of Managed Space in Heap</em> value because the
+                heap’s address space is increased by a “row” of direct blocks
+                at a time, rather than by single direct block increments.
+	    </p>
+	  </td>
+	</tr>
 
-      </table>
+	<tr>
+          <td><p>Number of Managed Objects in Heap</p></td>
+	  <td>
+	    <p>This is the number of managed objects in the heap.
+	    </p>
+	  </td>
+	</tr>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td>
-        </tr>
-        <tr>
-        <td> </td>
-        <td>(Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
-      </table>
+	<tr>
+          <td><p>Size of Huge Objects in Heap</p></td>
+	  <td>
+	    <p>This is the total size of huge objects in the heap (in bytes).
+	    </p>
+	  </td>
+	</tr>
 
-    </div>
+	<tr>
+          <td><p>Number of Huge Objects in Heap</p></td>
+	  <td>
+	    <p>This is the number of huge objects in the heap.
+	    </p>
+	  </td>
+	</tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
-        <tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-        </tr>
+	<tr>
+          <td><p>Size of Tiny Objects in Heap</p></td>
+	  <td>
+	    <p>This is the total size of tiny objects that are packed in heap
+                IDs (in bytes).
+	    </p>
+	  </td>
+	</tr>
 
-        <tr>
-          <td><p>Version & Type</p></td>
-          <td>
-            <p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	<tr>
+          <td><p>Number of Tiny Objects in Heap</p></td>
+	  <td>
+	    <p>This is the number of tiny objects that are packed in heap IDs.
+	    </p>
+	  </td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Huge objects have a value of <code>1</code>.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>Reserved.
-                  </td>
-                </tr>
-            </table></p>
-            
-          </td>
-        </tr>
+	<tr>
+          <td><p>Table Width</p></td>
+	  <td>
+	    <p>This is the number of columns in the doubling table for managed
+                blocks.  This value must be a power of two.
+	    </p>
+	  </td>
+	</tr>
 
-        <tr>
-            <td><p>Address</p></td>
-            <td><p>This field is the address of the filtered object in the file.</p>
-        </td>
+	<tr>
+          <td><p>Starting Block Size</p></td>
+	  <td>
+	    <p>This is the starting block size to use in the doubling table for 
+	       managed blocks (in bytes).  This value must be a power of two.
+	    </p>
+	  </td>
 	</tr>
 
 	<tr>
-	    <td><p>Length</p></td>
-	    <td><p>This field is the length of the filtered object in the file.</p>
-	    </td>
+          <td><p>Maximum Direct Block Size</p></td>
+	  <td>
+	    <p>This is the maximum size allowed for a managed direct block.
+                Objects inserted into the heap that are larger than this value
+                (less the number of bytes of direct block prefix/suffix)
+                are stored as ‘huge’ objects.  This value must be a power of
+                two.
+	    </p>
+	  </td>
 	</tr>
 
 	<tr>
-	    <td><p>Filter Mask</p></td>
-	    <td><p>This field is the I/O pipeline filter mask for the 
-		filtered object in the file.</p>
-	    </td>
+          <td><p>Maximum Heap Size</p></td>
+	  <td>
+	    <p>This is the maximum size of the heap’s linear address space for
+            managed objects (in bytes).  The value stored is the log2 of
+            the actual value, that is: the number of bits of the address space.
+            ‘Huge’ and ‘tiny’ objects are not counted in this value, since
+            they do not store objects in the linear address space of the
+            heap.
+	    </p>
+	  </td>
 	</tr>
 
 	<tr>
-	    <td><p>Filtered Size</p></td>
-	    <td><p>This field is the size of the de-filtered object in the file.</p>
-	    </td>
+          <td><p>Starting # of Rows in Root Indirect Block</p></td>
+	  <td>
+	    <p>This is the starting number of rows for the root indirect block.
+	       A value of 0 indicates that the root indirect block will have
+               the maximum number of rows needed to address the heap’s <em>Maximum
+               Heap Size</em>.
+	    </p>
+	  </td>
 	</tr>
 
-      </table>
-    </div>
+	<tr>
+          <td><p>Address of Root Block</p></td>
+	  <td>
+	    <p>This is the address of the root block for the heap.  It can
+            be the <a href="#UndefinedAddress">undefined address</a> if
+            there is no data in the heap.  It either points to a direct
+            block (if the <em>Current # of Rows in the Root Indirect 
+            Block</em> value is 0), or an indirect block.
+	    </p>
+	  </td>
+	</tr>
 
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>Fractal Heap ID for Managed Objects
-        </caption>
+	<tr>
+          <td><p>Current # of Rows in Root Indirect Block</p></td>
+	  <td>
+	    <p>This is the current number of rows in the root indirect block.
+		A value of 0 indicates that <em>Address of Root Block</em>
+                points to direct block instead of indirect block.
+	    </p>
+	  </td>
+	</tr>
 
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
+	<tr>
+          <td><p>Size of Filtered Root Direct Block</p></td>
+	  <td>
+	    <p>This is the size of the root direct block, if filters are
+                applied to heap objects (in bytes).  This field is only
+                stored in the header if the <em>I/O Filters’ Encoded Length</em>
+                is greater than 0.
+	    </p>
+	  </td>
+	</tr>
+
+	<tr>
+          <td><p>I/O Filter Mask</p></td>
+	  <td>
+	    <p>This is the filter mask for the root direct block, if filters
+                are applied to heap objects.  This mask has the same format as
+                that used for the filter mask in chunked raw data records in a
+                <a href="#V1Btrees">v1 B-tree</a>.
+                This field is only
+                stored in the header if the <em>I/O Filters’ Encoded Length</em>
+                is greater than 0.
+	    </p>
+	  </td>
 	</tr>
 
         <tr>
-          <td>Version & Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td><p>I/O Filter Information</p></td>
+	  <td>
+	    <p>This is the I/O filter information encoding direct blocks and
+                huge objects, if filters are applied to heap objects.  This
+                field is encoded as a <a href="#FilterMessage">Filter Pipeline</a>
+                message.
+                The size of this field is determined by <em>I/O Filters’
+                Encoded Length</em>.
+	    </p>
+	  </td>
         </tr>
+
         <tr>
-          <td colspan="4">Offset <em>(variable size)</em></td>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the header.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap Direct Block
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
         </tr>
 
         <tr>
-          <td colspan="4">Length <em>(variable size)</em></td>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Block Offset <em>(variable size)</em></td>
+        </tr>
+          
+        <tr>
+          <td colspan="4">Checksum <em>(optional)</em></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Object Data <em>(variable size)</em><br /><br /></td>
         </tr>
+          
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fractal Heap Direct Block
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Version & Type</p></td>
-          <td><p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>The current version of ID format.  This document
-                    describes version 0.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4-5</code></td>
-                  <td>The ID type.  Managed objects have a value of <code>0</code>.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0-3</code></td>
-                  <td>Reserved.
-                  </td>
-                </tr>
-            </table></p>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>FHDB</code>”
+            is used to indicate the
+            beginning of a fractal heap direct block.  This gives file consistency
+            checking utilities a better chance of reconstructing a
+            damaged file.
+            </p>
           </td>
         </tr>
-
+          
         <tr>
-          <td><p>Offset</p></td>
-          <td><p>This field is the offset of the object in the heap. 
-          This field’s size is the minimum number of bytes 
-          necessary to encode the <em>Maximum Heap Size</em> value 
-          (from the <em>Fractal Heap Header</em>). For example, if the 
-          value of the <em>Maximum Heap Size</em> is less than 256 bytes, 
-          this field is 1 byte in length, a <em>Maximum Heap Size</em> 
-          of 256-65535 bytes uses a 2 byte length, and so on.</p></td>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
         </tr>
 
         <tr>
-          <td><p>Length</p></td>
-          <td><p>This field is the length of the object in the heap. It 
-          is determined by taking the minimum value of <em>Maximum 
-          Direct Block Size</em> and <em>Maximum Size of Managed 
-          Objects</em> in the <em>Fractal Heap Header</em>. Again, 
-          the minimum number of bytes needed to encode that value is 
-          used for the size of this field.</p></td>
+          <td><p>Heap Header Address</p></td>
+          <td>
+            <p>This is the address for the fractal heap header that this
+                block belongs to.  This field is principally used for file
+                integrity checking.
+            </p>
+          </td>
         </tr>
-      </table>
-    </div>
 
-<br />
-<h3><a name="FreeSpaceManager">
-III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
+        <tr>
+          <td><p>Block Offset</p></td>
+          <td>
+            <p>This is the offset of the block within the fractal heap’s
+                address space (in bytes).  The number of bytes used to encode
+                this field is the <em>Maximum Heap Size</em> (in the heap’s
+                header) divided by 8 and rounded up to the next highest integer,
+                for values that are not a multiple of 8.  This value is
+                principally used for file integrity checking.
+            </p>
+          </td>
+        </tr>
 
-        <p>
-            Free-space managers are used to describe space within a heap or
-            the entire HDF5 file that is not currently used for that heap or
-            file.
-        </p>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the direct block.</p>
+	    <p>This field is only present if bit 1 of <em>Flags</em> in the
+                heap’s header is set.</p>
+          </td>
+        </tr>
 
-        <p>
-            The <em>free-space manager header</em> contains metadata information
-            about the space being tracked, along with the address of the list
-            of <em>free space sections</em> which actually describes the free
-            space. The header records information about free-space sections being
-            tracked, creation parameters for handling free-space sections of a
-            client, and section information used to locate the collection of
-            free-space sections.
-        </p>
-            
-        <p>
-            The <em>free-space section list</em> stores a collection of
-            free-space sections that is specific to each <em>client</em> of the
-            free-space manager.
+        <tr>
+          <td><p>Object Data</p></td>
+          <td>
+            <p>This section of the direct block stores the actual data for
+                objects in the heap.  The size of this section is determined by
+                the direct block’s size minus the size of the other fields
+                stored in the direct block (for example, the <em>Signature</em>,
+                <em>Version</em>, and others including the <em>Checksum</em> if it is
+                present).
+            </p>
+          </td>
+        </tr>
 
-            For example, the fractal heap is a client of the free space manager
-            and uses it to track unused space within the heap.  There are 4
-            types of section records for the fractal heap, each of which has
-            its own format, listed below.
-        </p>
+      </table>
+    </div>
 
+    <br />
+    <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Free-space Manager Header
+            Layout: Fractal Heap Indirect Block
         </caption>
 
         <tr>
@@ -5671,75 +6025,87 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
           
         <tr>
           <td>Version</td>
-          <td>Client ID</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Total Space Tracked<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Total Number of Sections<sup>L</sup><br /><br /></td>
+          <td colspan="4">Block Offset <em>(variable size)</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Number of Serialized Sections<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Child Direct Block #0 Address<sup>O</sup><br /><br /></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Number of Un-Serialized Sections<sup>L</sup><br /><br /></td>
+	  <td colspan="4"><br />Size of Filtered Direct Block #0 <em>(optional)</em> <sup>L</sup><br /><br /></td>
 	</tr>
-
 	<tr>
-	  <td colspan="2">Number of Section Classes</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td colspan="4">Filter Mask for Direct Block #0 <em>(optional)</em></td>
 	</tr>
 
         <tr>
-          <td colspan="2">Shrink Percent</td>
-          <td colspan="2">Expand Percent</td>
-        </tr>
-
-        <tr>
-          <td colspan="2">Size of Address Space</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Child Direct Block #1 Address<sup>O</sup><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Size of Filtered Direct Block #1 <em>(optional)</em><sup>L</sup><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Filter Mask for Direct Block #1 <em>(optional)</em></td>
 	</tr>
 
-        <tr>
-          <td colspan="4"><br />Maximum Section Size <sup>L</sup><br /><br /></td>
+	<tr>
+	    <td colspan="4">...</td>
 	</tr>
 
         <tr>
-          <td colspan="4"><br />Address of Serialized Section List<sup>O</sup><br /><br /></td>
-        </tr>
+          <td colspan="4"><br />Child Direct Block #K-1 Address<sup>O</sup><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Size of Filtered Direct Block #K-1 <em>(optional)</em><sup>L</sup><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Filter Mask for Direct Block #K-1 <em>(optional)</em></td>
+	</tr>
 
         <tr>
-          <td colspan="4"><br />Size of Serialized Section List Used<sup>L</sup><br /><br /></td>
-        </tr>
+          <td colspan="4"><br />Child Indirect Block #0 Address<sup>O</sup><br /><br /></td>
+	</tr>
 
         <tr>
-          <td colspan="4"><br />Allocated Size of Serialized Section List<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Child Indirect Block #1 Address<sup>O</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Checksum</td>
+	  <td colspan="4">...</td>
 	</tr>
+
+        <tr>
+          <td colspan="4"><br />Child Indirect Block #N-1 Address<sup>O</sup><br /><br /></td>
+	</tr>
+          
+        <tr>
+	  <td colspan="4">Checksum</td>
+        </tr>
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -5747,17 +6113,20 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fractal Heap Indirect Block
+        </caption>
 	<tr>
-          <th width="35%">Field Name</th>
+          <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
           <td><p>Signature</p></td>
           <td>
-            <p>The ASCII character string “<code>FSHD</code>” is used to
-                indicate the beginning of the Free-space Manager Header.
-                This gives file consistency checking utilities a better chance of
+            <p>The ASCII character string “<code>FHIB</code>” is used to
+                indicate the beginning of a fractal heap indirect block.  This
+                gives file consistency checking utilities a better chance of
                 reconstructing a damaged file.
             </p>
           </td>
@@ -5766,177 +6135,212 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
         <tr>
           <td><p>Version</p></td>
           <td>
-            <p>This is the version number for the Free-space Manager Header
-		and this document describes version 0.</p>
+            <p>This document describes version 0.</p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Client ID</p></td>
+          <td><p>Heap Header Address</p></td>
           <td>
-            <p>This is the client ID for identifying the user of this
-                free-space manager:
-                
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">ID</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-                    
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>Fractal heap
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>File
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2+</code></td>
-                      <td>Reserved.
-                      </td>
-                    </tr>
-                </table></p>
-            
+            <p>This is the address for the fractal heap header that this
+                block belongs to.  This field is principally used for file
+                integrity checking.
+            </p>
           </td>
         </tr>
 
-	<tr>
-          <td><p>Total Space Tracked</p></td>
-	  <td>
-            <p>This is the total amount of free space being tracked, in bytes.
+        <tr>
+          <td><p>Block Offset</p></td>
+          <td>
+            <p>This is the offset of the block within the fractal heap’s
+                address space (in bytes).  The number of bytes used to encode
+                this field is the <em>Maximum Heap Size</em> (in the heap’s
+                header) divided by 8 and rounded up to the next highest integer,
+                for values that are not a multiple of 8.  This value is
+                principally used for file integrity checking.
             </p>
           </td>
-	</tr>
+        </tr>
 
         <tr>
-          <td><p>Total Number of Sections</p></td>
+          <td><p>Child Direct Block #K Address</p></td>
           <td>
-	    <p>This is the total number of free-space sections being tracked.
+	    <p>This field is the address of the child direct block.
+                The size of the [uncompressed] direct block can be computed by
+                its offset in the heap’s linear address space.  
             </p>
           </td>
         </tr>
 
 	<tr>
-	  <td><p>Number of Serialized Sections</p></td>
+	  <td><p>Size of Filtered Direct Block #K</p></td>
 	  <td>
-	    <p>This is the number of serialized free-space sections being
-                tracked.
+	    <p>This is the size of the child direct block after passing through
+                the I/O filters defined for this heap (in bytes).  If no I/O
+                filters are present for this heap, this field is not present.
             </p>
 	  </td>
 	</tr>
 	<tr>
-	  <td><p>Number of Un-Serialized Sections</p></td>
+	  <td><p>Filter Mask for Direct Block #K</p></td>
 	  <td>
-            <p>This is the number of un-serialized free-space sections being
-                managed.  Un-serialized sections are created by the free-space
-                client when the list of sections is read in.
+            <p>This is the I/O filter mask for the filtered direct block.
+                This mask has the same format as that used for the filter mask
+                in chunked raw data records in a <a href="#V1Btrees">v1 B-tree</a>.
+                If no I/O filters are present for this heap, this field is not
+                present.
             </p>
 	  </td>
         </tr>
 
         <tr>
-          <td><p>Number of Section Classes</p></td>
+          <td><p>Child Indirect Block #N Address</p></td>
           <td>
-	    <p>This is the number of section classes handled by this free space
-                manager for the free-space client.
+	    <p>This field is the address of the child indirect block.
+                The size of the indirect block can be computed by
+                its offset in the heap’s linear address space.  
             </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Shrink Percent</p></td>
+          <td><p>Checksum</p></td>
           <td>
-	    <p>This is the percent of current size to shrink the allocated
-                serialized free-space section list.
-            </p>
+            <p>This is the checksum for the indirect block.</p>
           </td>
         </tr>
 
-        <tr>
-          <td><p>Expand Percent</p></td>
-          <td>
-	    <p>This is the percent of current size to expand the allocated
-                serialized free-space section list.
-            </p>
-          </td>
-        </tr>
+      </table>
+
+    </div>
+
+    <br />
+    <p>An object in the fractal heap is identified by means of a fractal heap ID, 
+	which encodes information to locate the object in the heap.
+	Currently, the fractal heap stores an object in one of three ways,
+        depending on the object’s size:</p>
 
+    <div align="center">
+      <table class="list80">
         <tr>
-          <td><p>Size of Address Space</p></td>
-          <td>
-            <p>This is the size of the address space that free-space sections
-                are within.  This is stored as the log<sub>2</sub> of the
-                actual value (in other words, the number of bits required 
-                to store values within that address space).
-            </p>
-          </td>
+          <th width="20%">Type</th>
+          <th width="80%" align="left">Description</th>
         </tr>
 
         <tr>
-          <td><p>Maximum Section Size</p></td>
+          <td align="center">Tiny</td>
           <td>
-            <p>This is the maximum size of a section to be tracked.
+            <p>When an object is small enough to be encoded in the 
+            heap ID, the object’s data is embedded in the fractal 
+            heap ID itself.  There are two sub-types for this type of 
+            object: normal and extended. The sub-type for tiny heap 
+            IDs depends on whether the heap ID is large enough to 
+            store objects greater than 16 bytes or not. If the 
+            heap ID length is 18 bytes or smaller, the 
+            ‘normal’ tiny heap ID form is used. If the 
+            heap ID length is greater than 18 bytes in length, the 
+            “extended” form is used. See the format 
+            description below for both sub-types.
             </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Address of Serialized Section List</p></td>
+          <td align="center">Huge</td>
           <td>
-            <p>This is the address where the serialized free-space section
-                list is stored.
+            <p>When the size of an object is larger than <em>Maximum Size of
+            Managed Objects</em> in the <em>Fractal Heap Header</em>, the
+            object’s data is stored on its own in the file and the object
+            is tracked/indexed via a version 2 B-tree.  All huge objects
+            for a particular fractal heap use the same v2 B-tree.  All huge
+            objects for a particular fractal heap use the same format for
+            their huge object IDs.
             </p>
-          </td>
-        </tr>
 
-        <tr>
-          <td><p>Size of Serialized Section List Used</p></td>
-          <td>
-            <p>This is the size of the serialized free-space section
-                list used (in bytes).  This value must be less than
-                or equal to the <em>allocated size of serialized section
-                list</em>, below.
-	    </p>
-          </td>
-        </tr>
+            <p>Depending on whether the IDs for a heap are large enough to hold
+            the object’s retrieval information and whether I/O pipeline filters
+            are applied to the heap’s objects, 4 sub-types are derived for
+            huge object IDs for this heap:</p>
+
+            <div align="center">
+              <table class="list">
+                <tr>
+                  <th align="left" width="35%">Sub-type</th>
+                  <th align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="left">Directly accessed, non-filtered</td>
+                  <td>
+                    <p>The object’s address and length are embedded in the
+                    fractal heap ID itself and the object is directly accessed
+                    from them.  This allows the object to be accessed without
+                    resorting to the B-tree.
+                    </p>
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="left">Directly accessed, filtered</td>
+                  <td>
+                    <p>The filtered object’s address, length, filter mask and
+                    de-filtered size are embedded in the fractal heap ID itself
+                    and the object is accessed directly with them.  This allows
+                    the object to be accessed without resorting to the B-tree.
+                    </p>
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="left">Indirectly accessed, non-filtered</td>
+                  <td>
+                    <p>The object is located by using a B-tree key embedded in
+                    the fractal heap ID to retrieve the address and length from
+                    the version 2 B-tree for huge objects.  Then, the address
+                    and length are used to access the object.
+                    </p>
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="left">Indirectly accessed, filtered</td>
+                  <td>
+                    <p>The object is located by using a B-tree key embedded in
+                    the fractal heap ID to retrieve the filtered object’s
+                    address, length, filter mask and de-filtered size from the
+                    version 2 B-tree for huge objects.  Then, this information
+                    is used to access the object.
+                    </p>
+                  </td>
+                </tr>
+              </table>
+            </div>
 
-        <tr>
-          <td><p>Allocated Size of Serialized Section List</p></td>
-          <td>
-            <p>This is the size of serialized free-space section list
-                actually allocated (in bytes).
-            </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Checksum</p></td>
+          <td align="center">Managed</td>
           <td>
-            <p>This is the checksum for the free-space manager header.</p>
+            <p>When the size of an object does not meet the above two
+            conditions, the object is stored and managed via the direct and
+            indirect blocks based on the doubling table.
+            </p>
           </td>
         </tr>
-
       </table>
     </div>
-
-    <br />
-    <p>The free-space sections being managed are stored in a 
-    <em>free-space section list</em>, described below. The sections 
-    in the free-space section list are stored in the following way: 
-    a count of the number of sections describing a particular size of 
-    free space and the size of the free-space described (in bytes), 
-    followed by a list of section description records; then another 
-    section count and size, followed by the list of section 
-    descriptions for that size; and so on.</p>
-    
     
+
+<br />
+    <p>The specific format for each type of heap ID is described below:
+    </p>
+
     <div align="center">
       <table class="format">
         <caption>
-          Free-space Section List
+            Layout: Fractal Heap ID for Tiny Objects (Sub-type 1 - 
+            ‘Normal’)
         </caption>
 
         <tr>
@@ -5944,154 +6348,218 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
           <th>byte</th>
           <th>byte</th>
           <th>byte</th>
-        </tr>
+	</tr>
 
         <tr>
-          <td colspan="4">Signature</td>
-        </tr>
-        
-        <tr>
-          <td>Version</td>
+          <td>Version, Type, and Length</td>
           <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Free-space Manager Header Address<sup>O</sup><br /><br /></td>
-        </tr>
-
-        <tr>
-          <td colspan="4">Number of Section Records in Set #0 <em>(variable size)</em></td>
+          <td colspan="4"><br />Data <em>(variable size)</em></td>
         </tr>
 
-        <tr>
-          <td colspan="4">Size of Free-space Section Described in Record Set #0 <em>(variable size)</em></td>
-	</tr>
+      </table>
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Fractal Heap ID for Tiny Objects (Sub-type 1 - 
+            ‘Normal’)
+        </caption>
 	<tr>
-	  <td colspan="4">Record Set #0 Section Record #0 Offset<em>(variable size)</em></td>
-	</tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+        </tr>
 
-	<tr>
-	  <td colspan="1">Record Set #0 Section Record #0 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td><p>Version, Type, and Length</p></td>
+          <td>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
 
-	<tr>
-	  <td colspan="4">Record Set #0 Section Record #0 Data <em>(variable size)</em></td>
-	</tr>
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Tiny objects have a value of <code>2</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>The length of the tiny object. The value stored 
+                  is one less than the actual length (since zero-length 
+                  objects are not allowed to be stored in the heap). 
+                  For example, an object of actual length 1 has an 
+                  encoded length of 0, an object of actual length 2 
+                  has an encoded length of 1, and so on.
+                  </td>
+                </tr>
+	    </table></p>
+            
+          </td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">...</td>
-	</tr>
+        <tr>
+          <td><p>Data</p></td>
+          <td>
+            <p>This is the data for the object.
+            </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Record Set #0 Section Record #K-1 Offset<em>(variable size)</em></td>
-	</tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="1">Record Set #0 Section Record #K-1 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap ID for Tiny Objects (Sub-type 2 - 
+            ‘Extended’)
+        </caption>
 
-	<tr>
-	  <td colspan="4">Record Set #0 Section Record #K-1 Data <em>(variable size)</em></td>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
 	</tr>
 
         <tr>
-          <td colspan="4">Number of Section Records in Set #1 <em>(variable size)</em></td>
+          <td>Version, Type, and Length</td>
+          <td>Extended Length</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4">Size of Free-space Section Described in Record Set #1 <em>(variable size)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Record Set #1 Section Record #0 Offset<em>(variable size)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="1">Record Set #1 Section Record #0 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Record Set #1 Section Record #0 Data <em>(variable size)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">...</td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Record Set #1 Section Record #K-1 Offset<em>(variable size)</em></td>
-	</tr>
+          <td colspan="4">Data <em>(variable size)</em></td>
+        </tr>
 
-	<tr>
-	  <td colspan="1">Record Set #1 Section Record #K-1 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+      </table>
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Fractal Heap ID for Tiny Objects (Sub-type 2 - 
+            ‘Extended’)
+        </caption>
 	<tr>
-	  <td colspan="4">Record Set #1 Section Record #K-1 Data <em>(variable size)</em></td>
-	</tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+        </tr>
 
-	<tr>
-	  <td colspan="4"><strong>...</strong></td>
-	</tr>
+        <tr>
+          <td><p>Version, Type, and Length</p></td>
+          <td>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
 
-	<tr>
-	  <td colspan="4"><strong>...</strong></td>
-	</tr>
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Tiny objects have a value of <code>2</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>These 4 bits, together with the next byte, form an
+                    unsigned 12-bit integer for holding the length of the
+                    object.  These 4-bits are bits 8-11 of the 12-bit integer.
+                    See description for the <em>Extended Length</em> field below.
+                  </td>
+                </tr>
+	    </table></p>
+            
+          </td>
+        </tr>
 
         <tr>
-          <td colspan="4">Number of Section Records in Set #N-1 <em>(variable size)</em></td>
+          <td><p>Extended Length</p></td>
+          <td>
+            <p>This byte, together with the 4 bits in the previous byte, 
+            forms an unsigned 12-bit integer for holding the length of 
+            the tiny object.  These 8 bits are bits 0-7 of the 12-bit 
+            integer formed. The value stored is one less than the actual 
+            length (since zero-length objects are not allowed to be 
+            stored in the heap). For example, an object of actual length 
+            1 has an encoded length of 0, an object of actual length 
+            2 has an encoded length of 1, and so on.
+            </p>
+          </td>
         </tr>
 
         <tr>
-          <td colspan="4">Size of Free-space Section Described in Record Set #N-1 <em>(variable size)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Record Set #N-1 Section Record #0 Offset<em>(variable size)</em></td>
-	</tr>
+          <td><p>Data</p></td>
+          <td>
+            <p>This is the data for the object.
+            </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td colspan="1">Record Set #N-1 Section Record #0 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="4">Record Set #N-1 Section Record #0 Data <em>(variable size)</em></td>
-	</tr>
 
-	<tr>
-	  <td colspan="4">...</td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap ID for Huge Objects (Sub-types 1 and 2): 
+            Indirectly Accessed, Non-filtered/Filtered
+        </caption>
 
-	<tr>
-	  <td colspan="4">Record Set #N-1 Section Record #K-1 Offset<em>(variable size)</em></td>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td colspan="1">Record Set #N-1 Section Record #K-1 Type</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td>Version and Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Record Set #N-1 Section Record #K-1 Data <em>(variable size)</td>
-	</tr>
+        <tr>
+          <td colspan="4"><br />v2 B-tree Key<sup>L</sup><em> (variable size)</em><br /><br /></td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Checksum</td>
-	</tr>
       </table>
 
       <table class="note">
         <tr>
         <td width="60%"> </td>
         <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
         </td></tr>
       </table>
     </div>
@@ -6099,240 +6567,176 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
     <br />
     <div align="center">
       <table class="desc">
-	<tr>
-          <th width="35%">Field Name</th>
+        <caption>
+            Fields: Fractal Heap ID for Huge Objects (Sub-types 1 and 2): 
+            Indirectly Accessed, Non-filtered/Filtered
+        </caption>
+        <tr>
+          <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Signature</p></td>
+          <td><p>Version and Type</p></td>
           <td>
-            <p>The ASCII character string “<code>FSSE</code>” is used to
-                indicate the beginning of the Free-space Section Information.
-                This gives file consistency checking utilities a better chance of
-                reconstructing a damaged file.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
-          <td><p>Version</p></td>
-          <td>
-            <p>This is the version number for the Free-space Section List
-		and this document describes version 0.</p>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Huge objects have a value of <code>1</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>Reserved.
+                  </td>
+                </tr>
+            </table></p>
+            
           </td>
         </tr>
 
         <tr>
-          <td><p>Free-space Manager Header Address</p></td>
-          <td>
-            <p>This is the address of the <em>Free-space Manager Header</em>.
-                This field is principally used for file
-                integrity checking.
-            </p>
-          </td>
+            <td><p>v2 B-tree Key</p></td>
+            <td><p>This field is the B-tree key for retrieving the information
+            from the version 2 B-tree for huge objects needed to access the
+            object.  See the description of <a href="#V2Btrees">v2 B-tree</a>
+            records sub-types 1 and 2 for a description of the fields.  New key
+            values are derived from <em>Next Huge Object ID</em> in the
+            <em>Fractal Heap Header</em>.</p>
+            </td>
         </tr>
 
-	<tr>
-          <td><p>Number of Section Records for Set #N</p></td>
-	  <td>
-            <p>This is the number of free-space section records for set #N.
-		The length of this field is the minimum number of bytes needed
-                to store the <em>number of serialized sections</em> (from the
-                <em>free-space manager header</em>).
-            </p>
-
-            <p>
-                The number of sets of free-space section records is
-                determined by the <em>size of serialized section list</em> in
-                the <em>free-space manager header</em>.
-            </p>
-          </td>
-	</tr>
-
-        <tr>
-          <td><p>Section Size for Record Set #N</p></td>
-          <td>
-	    <p>This is the size (in bytes) of the free-space section described
-                for <em>all</em> the section records in set #N.
-            </p>
+      </table>
+    </div>
 
-            <p>
-		The length of this field is the minimum number of bytes needed
-                to store the <em>maximum section size</em> (from the
-                <em>free-space manager header</em>).
-            </p>
-          </td>
-        </tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap ID for Huge Objects (Sub-type 3): 
+            Directly Accessed, Non-filtered
+        </caption>
 
         <tr>
-          <td><p>Record Set #N Section #K Offset</p></td>
-          <td>
-	    <p>This is the offset (in bytes) of the free-space section within
-                the client for the free-space manager.
-            </p>
-
-            <p>
-		The length of this field is the minimum number of bytes needed
-                to store the <em>size of address space</em> (from the
-                <em>free-space manager header</em>).
-            </p>
-          </td>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
         </tr>
 
         <tr>
-          <td><p>Record Set #N Section #K Type</p></td>
-          <td>
-	    <p>This is the type of the section record, used to decode the
-        <em>record set #N section #K data</em> information. The defined 
-        record type for <em>file</em> client is:
-        
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Type</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>File’s section (a range of actual bytes in file)
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1+</code></td>
-                      <td>Reserved.
-                      </td>
-                    </tr>
-                </table></p>
-	    
-	    <p>The defined record types for a <em>fractal heap</em> client are:
-        
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Type</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>Fractal heap “single” section
-                      </td>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>Fractal heap “first row” section
-                      </td>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>Fractal heap “normal row” section
-                      </td>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>Fractal heap “indirect” section
-                      </td>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>4+</code></td>
-                      <td>Reserved.
-                      </td>
-                    </tr>
-                </table></p>
-            
-          </td>
+          <td>Version and Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td><p>Record Set #N Section #K Data</p></td>
-          <td>
-	    <p>This is the section-type specific information for each record
-                in the record set, described below.
-            </p>
-          </td>
+          <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>Checksum</p></td>
-          <td>
-	    <p>This is the checksum for the <em>Free-space Section List</em>.
-            </p>
-          </td>
+          <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
         </tr>
 
       </table>
-    </div>
-
-    <br />
-    <p>
-        The section-type specific data for each free-space section record is
-        described below:
-    </p>
-
-    <div align="center">
-      <table class="format">
-        <caption>
-          File’s Section Data Record
-        </caption>
 
+      <table class="note">
         <tr>
-          <td colspan="4"><em>No additional record data stored</em></td>
-        </tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
-    <br />
     <div align="center">
-      <table class="format">
+      <table class="desc">
         <caption>
-          Fractal Heap “Single” Section Data Record
+            Fields: Fractal Heap ID for Huge Objects (Sub-type 3): 
+            Directly Accessed, Non-filtered
         </caption>
-
         <tr>
-          <td colspan="4"><em>No additional record data stored</em></td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
         </tr>
-      </table>
-    </div>
-
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>
-          Fractal Heap “First Row” Section Data Record
-        </caption>
 
         <tr>
-          <td colspan="4"><em>Same format as “indirect” section data</em></td>
+          <td><p>Version and Type</p></td>
+          <td>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Huge objects have a value of <code>1</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>Reserved.
+                  </td>
+                </tr>
+            </table></p>
+            
+          </td>
         </tr>
-      </table>
-    </div>
 
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>
-          Fractal Heap “Normal Row” Section Data Record
-        </caption>
+        <tr>
+            <td><p>Address</p></td>
+            <td><p>This field is the address of the object in the file.</p>
+            </td>
+        </tr>
 
         <tr>
-          <td colspan="4"><em>No additional record data stored</em></td>
+            <td><p>Length</p></td>
+            <td><p>This field is the length of the object in the file.</p>
+            </td>
         </tr>
       </table>
     </div>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Fractal Heap “Indirect” Section Data Record
+            Layout: Fractal Heap ID for Huge Objects (Sub-type 4): 
+            Directly Accessed, Filtered
         </caption>
 
         <tr>
@@ -6343,116 +6747,245 @@ III.G. Disk Format: Level 1G - Free-space Manager</a></h3>
         </tr>
 
         <tr>
-          <td colspan="4">Fractal Heap Indirect Block Offset <em>(variable size)</em></td>
+          <td>Version and Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="2">Block Start Row</td>
-          <td colspan="2">Block Start Column</td>
+          <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">Number of Blocks</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
         </tr>
+
+        <tr>
+          <td colspan="4">Filter Mask</td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />De-filtered Size <sup>L</sup><br /><br /></td>
+        </tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
-	<tr>
+        <caption>
+            Fields: Fractal Heap ID for Huge Objects (Sub-type 4): 
+            Directly Accessed, Filtered
+        </caption>
+        <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Fractal Heap Block Offset</p></td>
+          <td><p>Version and Type</p></td>
           <td>
-            <p>The offset of the indirect block in the fractal heap’s address
-                space containing the empty blocks.
-            </p>
-            <p>
-                The number of bytes used to encode this field is the minimum
-                number of bytes needed to encode values for the <em>Maximum
-                Heap Size</em> (in the fractal heap’s header).
-            </p>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Huge objects have a value of <code>1</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>Reserved.
+                  </td>
+                </tr>
+            </table></p>
+            
           </td>
         </tr>
-          
+
         <tr>
-          <td><p>Block Start Row</p></td>
-          <td>
-            <p>This is the row that the empty blocks start in.
-	    </p>
-          </td>
+            <td><p>Address</p></td>
+            <td><p>This field is the address of the filtered object in the file.</p>
+        </td>
+	</tr>
+
+	<tr>
+	    <td><p>Length</p></td>
+	    <td><p>This field is the length of the filtered object in the file.</p>
+	    </td>
+	</tr>
+
+	<tr>
+	    <td><p>Filter Mask</p></td>
+	    <td><p>This field is the I/O pipeline filter mask for the 
+		filtered object in the file.</p>
+	    </td>
+	</tr>
+
+	<tr>
+	    <td><p>Filtered Size</p></td>
+	    <td><p>This field is the size of the de-filtered object in the file.</p>
+	    </td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap ID for Managed Objects
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+	</tr>
+
+        <tr>
+          <td>Version and Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        </tr>
+        <tr>
+          <td colspan="4">Offset <em>(variable size)</em></td>
         </tr>
 
         <tr>
-          <td><p>Block Start Column</p></td>
-          <td>
-            <p>This is the column that the empty blocks start in.
-	    </p>
-          </td>
+          <td colspan="4">Length <em>(variable size)</em></td>
+        </tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Fractal Heap ID for Managed Objects
+        </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Number of Blocks</p></td>
-          <td>
-            <p>This is the number of empty blocks covered by the section.
-	    </p>
+          <td><p>Version and Type</p></td>
+          <td><p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>The current version of ID format.  This document
+                    describes version 0.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4-5</code></td>
+                  <td>The ID type.  Managed objects have a value of <code>0</code>.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0-3</code></td>
+                  <td>Reserved.
+                  </td>
+                </tr>
+            </table></p>
           </td>
         </tr>
+
+        <tr>
+          <td><p>Offset</p></td>
+          <td><p>This field is the offset of the object in the heap. 
+          This field’s size is the minimum number of bytes 
+          necessary to encode the <em>Maximum Heap Size</em> value 
+          (from the <em>Fractal Heap Header</em>). For example, if the 
+          value of the <em>Maximum Heap Size</em> is less than 256 bytes, 
+          this field is 1 byte in length, a <em>Maximum Heap Size</em> 
+          of 256-65535 bytes uses a 2 byte length, and so on.</p></td>
+        </tr>
+
+        <tr>
+          <td><p>Length</p></td>
+          <td><p>This field is the length of the object in the heap. It 
+          is determined by taking the minimum value of <em>Maximum 
+          Direct Block Size</em> and <em>Maximum Size of Managed 
+          Objects</em> in the <em>Fractal Heap Header</em>. Again, 
+          the minimum number of bytes needed to encode that value is 
+          used for the size of this field.</p></td>
+        </tr>
       </table>
     </div>
 
-<br />
-<h3><a name="SOHMTable">
-III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
+<h3><a name="FreeSpaceManager">
+III.H. Disk Format: Level 1H - Free-space Manager</a></h3>
 
         <p>
-            The <em>shared object header message table</em> is used to locate
-            object
-            header messages that are shared between two or more object headers
-            in the file.  Shared object header messages are stored and indexed
-            in the file in one of two ways: indexed sequentially in a
-            <em>shared header message list</em> or indexed with a v2 B-tree.
-            The shared messages themselves are either stored in a fractal
-            heap (when two or more objects share the message), or remain in an
-            object’s header (when only one object uses the message currently,
-            but the message can be shared in the future).
+            Free-space managers are used to describe space within a heap or
+            the entire HDF5 file that is not currently used for that heap or
+            file.
         </p>
 
         <p>
-            The <em>shared object header message table</em>
-            contains a list of shared message index headers.  Each index header
-            records information about the version of the index format, the index
-            storage type, flags for the message types indexed, the number of
-            messages in the index, the address where the index resides,
-            and the fractal heap address if shared messages are stored there.
+            The <em>free-space manager header</em> contains metadata information
+            about the space being tracked, along with the address of the list
+            of <em>free space sections</em> which actually describes the free
+            space. The header records information about free-space sections being
+            tracked, creation parameters for handling free-space sections of a
+            client, and section information used to locate the collection of
+            free-space sections.
         </p>
-
+            
         <p>
-            Each index can be either a list or a v2 B-tree and may transition
-            between those two forms as the number of messages in the index
-            varies.  Each shared message record contains information used to
-            locate the shared message from either a fractal heap or an object
-            header.  The types of messages that can be shared are: <em>Dataspace,
-            Datatype, Fill Value, Filter Pipeline and Attribute</em>.
-        </p>
+            The <em>free-space section list</em> stores a collection of
+            free-space sections that is specific to each <em>client</em> of the
+            free-space manager.
 
-        <p>
-            The <em>shared object header message table</em> is pointed to
-            from a <a href="#SOHMTableMessage">shared message table</a> message
-            in the superblock extension for a file.  This message stores the
-            version of the table format, along with the number of index headers
-            in the table.
+            For example, the fractal heap is a client of the free space manager
+            and uses it to track unused space within the heap.  There are 4
+            types of section records for the fractal heap, each of which has
+            its own format, listed below.
         </p>
 
     <div align="center">
       <table class="format">
         <caption>
-          Shared Object Header Message Table
+            Layout: Free-space Manager Header
         </caption>
 
         <tr>
@@ -6467,81 +7000,78 @@ III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
         </tr>
           
         <tr>
-          <td>Version for index #0</td>
-          <td>Index Type for index #0</td>
-          <td colspan="2">Message Type Flags for index #0</td>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4">Minimum Message Size for index #0</td>
+          <td colspan="4"><br />Total Space Tracked<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">List Cutoff for index #0</td>
-          <td colspan="2">v2 B-tree Cutoff for index #0</td>
+          <td colspan="4"><br />Total Number of Sections<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">Number of Messages for index #0</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Number of Serialized Sections<sup>L</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Index Address<sup>O</sup> for index #0<br /><br /></td>
+	  <td colspan="4"><br />Number of Un-Serialized Sections<sup>L</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #0<br /><br /></td>
+	  <td colspan="2">Number of Section Classes</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
         <tr>
-          <td colspan="4">...</td>
-	</tr>
+          <td colspan="2">Shrink Percent</td>
+          <td colspan="2">Expand Percent</td>
+        </tr>
 
         <tr>
-          <td colspan="4">...</td>
+          <td colspan="2">Size of Address Space</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
         <tr>
-          <td>Version for index #N-1</td>
-          <td>Index Type for index #N-1</td>
-          <td colspan="2">Message Type Flags for index #N-1</td>
-        </tr>
+          <td colspan="4"><br />Maximum Section Size <sup>L</sup><br /><br /></td>
+	</tr>
 
         <tr>
-          <td colspan="4">Minimum Message Size for index #N-1</td>
+          <td colspan="4"><br />Address of Serialized Section List<sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">List Cutoff for index #N-1</td>
-          <td colspan="2">v2 B-tree Cutoff for index #N-1</td>
+          <td colspan="4"><br />Size of Serialized Section List Used<sup>L</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="2">Number of Messages for index #N-1</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4"><br />Allocated Size of Serialized Section List<sup>L</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Index Address<sup>O</sup> for index #N-1<br /><br /></td>
+	  <td colspan="4">Checksum</td>
 	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #N-1<br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Checksum</td>
-	</tr>
-      </table>
+      </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -6549,6 +7079,9 @@ III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Free-space Manager Header
+        </caption>
 	<tr>
           <th width="35%">Field Name</th>
           <th>Description</th>
@@ -6557,228 +7090,167 @@ III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
         <tr>
           <td><p>Signature</p></td>
           <td>
-            <p>The ASCII character string “<code>SMTB</code>” is used to
-                indicate the beginning of the Shared Object Header Message table.
-                This gives file consistency checking utilities a better chance of
-                reconstructing a damaged file.
+            <p>The ASCII character string “<code>FSHD</code>” 
+            is used to indicate the beginning of the Free-space Manager 
+            Header. This gives file consistency checking utilities a 
+            better chance of reconstructing a damaged file.
             </p>
           </td>
         </tr>
           
         <tr>
-          <td><p>Version for index #N</p></td>
+          <td><p>Version</p></td>
           <td>
-            <p>This is the version number for the list of shared object header message
-		indexes and this document describes version 0.</p>
+            <p>This is the version number for the Free-space Manager Header
+		and this document describes version 0.</p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Index Type for index #N</p></td>
+          <td><p>Client ID</p></td>
           <td>
-            <p>The type of index can be an unsorted list or a v2 B-tree.
-            </p>
-          </td>
-        </tr>
-
-	<tr>
-          <td><p>Message Type Flags for index #N</p></td>
-	  <td>
-            <p>This field indicates the type of messages tracked in the index,
-                as follows:
+            <p>This is the client ID for identifying the user of this
+                free-space manager:
+                
                 <table class="list">
                     <tr>
-                      <th width="20%" align="center">Bits</th>
+                      <th width="20%" align="center">ID</th>
                       <th width="80%" align="left">Description</th>
                     </tr>
-
+                    
                     <tr>
                       <td align="center"><code>0</code></td>
-                      <td>If set, the index tracks <em>Dataspace Messages</em>.
+                      <td>Fractal heap
                       </td>
                     </tr>
                     <tr>
                       <td align="center"><code>1</code></td>
-                      <td>If set, the message tracks <em>Datatype Messages</em>.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>If set, the message tracks <em>Fill Value Messages</em>.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>If set, the message tracks <em>Filter Pipeline Messages</em>.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>4</code></td>
-                      <td>If set, the message tracks <em>Attribute Messages</em>.
+                      <td>File
                       </td>
                     </tr>
                     <tr>
-                      <td align="center"><code>5-15</code></td>
-                      <td>Reserved (zero).
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
                       </td>
                     </tr>
                 </table></p>
             
+          </td>
+        </tr>
 
-            <p>
-                An index can track more than one type of message, but each type
-                of message can only by in one index.
+	<tr>
+          <td><p>Total Space Tracked</p></td>
+	  <td>
+            <p>This is the total amount of free space being tracked, in bytes.
             </p>
           </td>
 	</tr>
 
         <tr>
-          <td><p>Minimum Message Size for index #N</p></td>
+          <td><p>Total Number of Sections</p></td>
           <td>
-	    <p>This is the message size sharing threshold for the index.
-		If the encoded size of the message is less than this value, the
-                message is not shared.
+	    <p>This is the total number of free-space sections being tracked.
             </p>
           </td>
         </tr>
 
 	<tr>
-	  <td><p>List Cutoff for index #N</p></td>
+	  <td><p>Number of Serialized Sections</p></td>
 	  <td>
-	    <p>This is the cutoff value for the indexing of messages to
-                switch from a list to a v2 B-tree.  If the number of messages
-                is greater than this value, the index should be a v2 B-tree.
+	    <p>This is the number of serialized free-space sections being
+                tracked.
             </p>
 	  </td>
 	</tr>
 	<tr>
-	  <td><p>v2 B-tree Cutoff for index #N</p></td>
+	  <td><p>Number of Un-Serialized Sections</p></td>
 	  <td>
-            <p>This is is the cutoff value for the indexing of messages to 
-		switch from a v2 B-tree back to a list.  If the number of
-                messages is less than this value, the index should be a list.
+            <p>This is the number of un-serialized free-space sections being
+                managed.  Un-serialized sections are created by the free-space
+                client when the list of sections is read in.
             </p>
 	  </td>
         </tr>
 
         <tr>
-          <td><p>Number of Messages for index #N</p></td>
+          <td><p>Number of Section Classes</p></td>
           <td>
-	    <p>The number of shared messages being tracked for the index.
+	    <p>This is the number of section classes handled by this free space
+                manager for the free-space client.
             </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Index Address for index #N</p></td>
+          <td><p>Shrink Percent</p></td>
           <td>
-	    <p>This field is the address of the list or v2 B-tree where the
-                index nodes reside.
+	    <p>This is the percent of current size to shrink the allocated
+                serialized free-space section list.
             </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Fractal Heap Address for index #N</p></td>
+          <td><p>Expand Percent</p></td>
           <td>
-	    <p>This field is the address of the fractal heap if shared messages
-                are stored there.
+	    <p>This is the percent of current size to expand the allocated
+                serialized free-space section list.
             </p>
           </td>
         </tr>
 
         <tr>
-          <td><p>Checksum</p></td>
+          <td><p>Size of Address Space</p></td>
           <td>
-            <p>This is the checksum for the table.</p>
+            <p>This is the size of the address space that free-space sections
+                are within.  This is stored as the log<sub>2</sub> of the
+                actual value (in other words, the number of bits required 
+                to store values within that address space).
+            </p>
           </td>
         </tr>
 
-      </table>
-    </div>
-
-    <br />
-    <p>
-        Shared messages are indexed either with a <em>shared message record
-        list</em>, described below, or using a v2 B-tree (using record type 7).
-        The number of records in the <em>shared message record list</em> is
-        determined in the index’s entry in the <em>shared object header message
-        table</em>.
-    </p>
-
-    <div align="center">
-      <table class="format">
-        <caption>
-          Shared Message Record List
-        </caption>
-
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-        </tr>
-
-        <tr>
-          <td colspan="4">Signature</td>
-        </tr>
-          
-        <tr>
-          <td colspan="4">Shared Message Record #0</td>
-        </tr>
-
-        <tr>
-          <td colspan="4">Shared Message Record #1</td>
-        </tr>
-
-        <tr>
-          <td colspan="4">...</td>
-        </tr>
-
         <tr>
-          <td colspan="4">Shared Message Record #N-1</td>
+          <td><p>Maximum Section Size</p></td>
+          <td>
+            <p>This is the maximum size of a section to be tracked.
+            </p>
+          </td>
         </tr>
 
         <tr>
-          <td colspan="4">Checksum</td>
-        </tr>
-      </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+          <td><p>Address of Serialized Section List</p></td>
+          <td>
+            <p>This is the address where the serialized free-space section
+                list is stored.
+            </p>
+          </td>
         </tr>
 
         <tr>
-          <td><p>Signature</p></td>
+          <td><p>Size of Serialized Section List Used</p></td>
           <td>
-            <p>The ASCII character string “<code>SMLI</code>” is used to
-                indicate the beginning of a list of index nodes.
-                This gives file consistency checking utilities a better chance of
-                reconstructing a damaged file.
-            </p>
+            <p>This is the size of the serialized free-space section
+                list used (in bytes).  This value must be less than
+                or equal to the <em>allocated size of serialized section
+                list</em>, below.
+	    </p>
           </td>
         </tr>
-          
+
         <tr>
-          <td><p>Shared Message Record #N</p></td>
+          <td><p>Allocated Size of Serialized Section List</p></td>
           <td>
-            <p>The record for locating the shared message, either in the
-                fractal heap for the index, or an object header (see format for
-                <em>index nodes</em> below).
-	    </p>
+            <p>This is the size of serialized free-space section list
+                actually allocated (in bytes).
+            </p>
           </td>
         </tr>
 
         <tr>
           <td><p>Checksum</p></td>
           <td>
-            <p>This is the checksum for the list.
-            </p>
+            <p>This is the checksum for the free-space manager header.</p>
           </td>
         </tr>
 
@@ -6786,15 +7258,20 @@ III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
     </div>
 
     <br />
-    <p>
-        The record for each shared message in an index is stored in one of the
-        following forms:
-    </p>
-
+    <p>The free-space sections being managed are stored in a 
+    <em>free-space section list</em>, described below. The sections 
+    in the free-space section list are stored in the following way: 
+    a count of the number of sections describing a particular size of 
+    free space and the size of the free-space described (in bytes), 
+    followed by a list of section description records; then another 
+    section count and size, followed by the list of section 
+    descriptions for that size; and so on.</p>
+    
+    
     <div align="center">
       <table class="format">
         <caption>
-          Shared Message Record, for messages stored in a fractal heap
+            Layout: Free-space Section List
         </caption>
 
         <tr>
@@ -6805,1205 +7282,1116 @@ III.H. Disk Format: Level 1H - Shared Object Header Message Table</a></h3>
         </tr>
 
         <tr>
-          <td>Message Location</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+          <td colspan="4">Signature</td>
         </tr>
-          
+        
         <tr>
-          <td colspan="4">Hash Value</td>
+          <td>Version</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
         </tr>
 
         <tr>
-          <td colspan="4">Reference Count</td>
+          <td colspan="4"><br />Free-space Manager Header Address<sup>O</sup><br /><br /></td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Fractal Heap ID<br /><br /></td>
-        </tr>
-      </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+          <td colspan="4">Number of Section Records in Set #0 <em>(variable size)</em></td>
         </tr>
 
         <tr>
-          <td><p>Message Location</p></td>
-          <td>
-            <p>This has a value of 0 indicating that the message is stored in
-                the heap.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
-          <td><p>Hash Value</p></td>
-          <td>
-            <p>This is the hash value for the message.
-	    </p>
-          </td>
-        </tr>
+          <td colspan="4">Size of Free-space Section Described in Record Set #0 <em>(variable size)</em></td>
+	</tr>
 
-        <tr>
-          <td><p>Reference Count</p></td>
-          <td>
-            <p>This is the number of times the message is used in the file.
-            </p>
-          </td>
-        </tr>
-
-        <tr>
-          <td><p>Fractal Heap ID</p></td>
-          <td>
-	    <p>This is an 8-byte fractal heap ID for the message as stored in
-                the fractal heap for the index.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-        <caption>
-          Shared Message Record, for messages stored in an object header
-        </caption>
-
-        <tr>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-          <th>byte</th>
-        </tr>
+	<tr>
+	  <td colspan="4">Record Set #0 Section Record #0 Offset<em>(variable size)</em></td>
+	</tr>
 
-        <tr>
-          <td>Message Location</td>
+	<tr>
+	  <td colspan="1">Record Set #0 Section Record #0 Type</td>
           <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-        </tr>
-          
-        <tr>
-          <td colspan="4">Hash Value</td>
-        </tr>
-
-        <tr>
-          <td>Reserved</td>
-          <td>Message Type</td>
-          <td colspan="2">Creation Index</td>
-        </tr>
-
-        <tr>
-          <td colspan="4"><br />Object Header Address<sup>O</sup><br /><br /></td>
-        </tr>
-      </table>
+	</tr>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
+	<tr>
+	  <td colspan="4">Record Set #0 Section Record #0 Data <em>(variable size)</em></td>
+	</tr>
 
-    </div>
+	<tr>
+	  <td colspan="4">...</td>
+	</tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-        </tr>
+	  <td colspan="4">Record Set #0 Section Record #K-1 Offset<em>(variable size)</em></td>
+	</tr>
 
-        <tr>
-          <td><p>Message Location</p></td>
-          <td>
-            <p>This has a value of 1 indicating that the message is stored in
-                an object header.
-            </p>
-          </td>
-        </tr>
-          
-        <tr>
-          <td><p>Hash Value</p></td>
-          <td>
-            <p>This is the hash value for the message.
-	    </p>
-          </td>
-        </tr>
+	<tr>
+	  <td colspan="1">Record Set #0 Section Record #K-1 Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
 
-        <tr>
-          <td><p>Message Type</p></td>
-          <td>
-            <p>This is the message type in the object header.
-            </p>
-          </td>
-        </tr>
+	<tr>
+	  <td colspan="4">Record Set #0 Section Record #K-1 Data <em>(variable size)</em></td>
+	</tr>
 
         <tr>
-          <td><p>Creation Index</p></td>
-          <td>
-	    <p>This is the creation index of the message within the object
-                header.
-            </p>
-          </td>
+          <td colspan="4">Number of Section Records in Set #1 <em>(variable size)</em></td>
         </tr>
 
         <tr>
-          <td><p>Object Header Address</p></td>
-          <td>
-	    <p>This is the address of the object header where the message is
-                located.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-
-
-
-<br />
-<br />
-<hr />
-<h2><a name="DataObject">
-IV. Disk Format: Level 2 - Data Objects </a></h2>
-
-    <p>Data objects contain the “real” user-visible information in the file.
-      These objects compose the scientific data and other information which
-      are generally thought of as “data” by the end-user.  All the
-      other information in the file is provided as a framework for
-      storing and accessing these data objects.
-    </p>
-
-    <p>A data object is composed of header and data
-      information.  The header information contains the information
-      needed to interpret the data information for the object as
-      well as additional “metadata” or pointers to additional
-      “metadata” used to describe or annotate each object.
-    </p>
-
-<br />
-<h3><a name="ObjectHeader">
-IV.A. Disk Format: Level 2A - Data Object Headers</a></h3>
+          <td colspan="4">Size of Free-space Section Described in Record Set #1 <em>(variable size)</em></td>
+	</tr>
 
-    <p>The header information of an object is designed to encompass
-    all of the information about an object, except for the data itself. 
-    This information includes the dataspace, the datatype, information 
-    about how the data is stored on disk (in external files, compressed, 
-    broken up in blocks, and so on), as well as other information used 
-    by the library to speed up access to the data objects or maintain 
-    a file’s integrity. Information stored by user applications 
-    as attributes is also stored in the object’s header. The header 
-    of each object is not necessarily located immediately prior to the 
-    object’s data in the file and in fact may be located in any 
-    position in the file. The order of the messages in an object header 
-    is not significant.</p>
+	<tr>
+	  <td colspan="4">Record Set #1 Section Record #0 Offset<em>(variable size)</em></td>
+	</tr>
 
-    <p>Object headers are composed of a prefix and a set of messages.  The
-      prefix contains the information needed to interpret the messages and
-      a small amount of metadata about the object, and the messages contain
-      the majority of the metadata about the object.
-    </p>
+	<tr>
+	  <td colspan="1">Record Set #1 Section Record #0 Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
 
-<br />
-<h3><a name="ObjectHeaderPrefix">
-IV.A.1. Disk Format: Level 2A1 - Data Object Header Prefix</a></h3>
+	<tr>
+	  <td colspan="4">Record Set #1 Section Record #0 Data <em>(variable size)</em></td>
+	</tr>
 
-<br />
-<h4><a name="V1ObjectHeaderPrefix">
-IV.A.1.a. Version 1 Data Object Header Prefix</a></h4>
+	<tr>
+	  <td colspan="4">...</td>
+	</tr>
 
-    <p>Header messages are aligned on 8-byte boundaries for version 1 
-        object headers.
-    </p>
+	<tr>
+	  <td colspan="4">Record Set #1 Section Record #K-1 Offset<em>(variable size)</em></td>
+	</tr>
 
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Version 1 Object Header
-	</caption>
+	<tr>
+	  <td colspan="1">Record Set #1 Section Record #K-1 Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
 
 	<tr>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
+	  <td colspan="4">Record Set #1 Section Record #K-1 Data <em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Reserved (zero)</td>
-	  <td colspan="2">Total Number of Header Messages</td>
+	  <td colspan="4"><strong>...</strong></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Object Reference Count</td>
+	  <td colspan="4"><strong>...</strong></td>
+	</tr>
+
+        <tr>
+          <td colspan="4">Number of Section Records in Set #N-1 <em>(variable size)</em></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Size of Free-space Section Described in Record Set #N-1 <em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Object Header Size</td>
+	  <td colspan="4">Record Set #N-1 Section Record #0 Offset<em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Header Message Type #1</td>
-	  <td colspan="2">Size of Header Message Data #1</td>
+	  <td colspan="1">Record Set #N-1 Section Record #0 Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td>Header Message #1 Flags</td>
-	  <td colspan="3">Reserved (zero)</td>
+	  <td colspan="4">Record Set #N-1 Section Record #0 Data <em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
+	  <td colspan="4">...</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td colspan="4">Record Set #N-1 Section Record #K-1 Offset<em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Header Message Type #n</td>
-	  <td colspan="2">Size of Header Message Data #n</td>
+	  <td colspan="1">Record Set #N-1 Section Record #K-1 Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td>Header Message #n Flags</td>
-	  <td colspan="3">Reserved (zero)</td>
+	  <td colspan="4">Record Set #N-1 Section Record #K-1 Data <em>(variable size)</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
+	  <td colspan="4">Checksum</td>
 	</tr>
       </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Free-space Section List
+        </caption>
 	<tr>
-          <th width="30%">Field Name</th>
+          <th width="35%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Version</p></td>
-	  <td>
-            <p>This value is used to determine the format of the
-                information in the object header.  When the format of the
-                object header is changed, the version number
-                is incremented and can be used to determine how the
-                information in the object header is formatted.  This
-                is version one (1) (there was no version zero (0)) of the
-                object header.
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>FSSE</code>” 
+            is used to indicate the beginning of the Free-space Section 
+            Information. This gives file consistency checking utilities 
+            a better chance of reconstructing a damaged file.
             </p>
           </td>
-	</tr>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This is the version number for the Free-space Section List
+		and this document describes version 0.</p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Total Number of Header Messages</p></td>
-	  <td>
-            <p>This value determines the total number of messages listed in
-                object headers for this object.  This value includes the messages
-                in continuation messages for this object.
+        <tr>
+          <td><p>Free-space Manager Header Address</p></td>
+          <td>
+            <p>This is the address of the <em>Free-space Manager Header</em>.
+                This field is principally used for file
+                integrity checking.
             </p>
           </td>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Object Reference Count</p></td>
+          <td><p>Number of Section Records for Set #N</p></td>
 	  <td>
-            <p>This value specifies the number of “hard links” to this object
-                within the current file.  References to the object from external
-                files, “soft links” in this file and object references in this
-                file are not tracked.
+            <p>This is the number of free-space section records for set #N.
+		The length of this field is the minimum number of bytes needed
+                to store the <em>number of serialized sections</em> (from the
+                <em>free-space manager header</em>).
             </p>
-          </td>
-	</tr>
 
-	<tr>
-	  <td><p>Object Header Size</p></td>
-	  <td>
-            <p>This value specifies the number of bytes of header message data
-                following this length field that contain object header messages
-                for this object header.  This value does not include the size of
-                object header continuation blocks for this object elsewhere in the
-                file.
+            <p>
+                The number of sets of free-space section records is
+                determined by the <em>size of serialized section list</em> in
+                the <em>free-space manager header</em>.
             </p>
           </td>
 	</tr>
 
-	<tr>
-	  <td><p>Header Message #n Type</p></td>
-	  <td>
-            <p>This value specifies the type of information included in the
-                following header message data.  The message types for 
-                header messages are defined in sections below.
+        <tr>
+          <td><p>Section Size for Record Set #N</p></td>
+          <td>
+	    <p>This is the size (in bytes) of the free-space section described
+                for <em>all</em> the section records in set #N.
+            </p>
+
+            <p>
+		The length of this field is the minimum number of bytes needed
+                to store the <em>maximum section size</em> (from the
+                <em>free-space manager header</em>).
             </p>
           </td>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Size of Header Message #n Data</p></td>
-	  <td>
-            <p>This value specifies the number of bytes of header
-                message data following the header message type and length
-                information for the current message. The size includes
-                padding bytes to make the message a multiple of eight
-                bytes.
+        <tr>
+          <td><p>Record Set #N Section #K Offset</p></td>
+          <td>
+	    <p>This is the offset (in bytes) of the free-space section within
+                the client for the free-space manager.
+            </p>
+
+            <p>
+		The length of this field is the minimum number of bytes needed
+                to store the <em>size of address space</em> (from the
+                <em>free-space manager header</em>).
             </p>
           </td>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Header Message #n Flags</p></td>
-	  <td>
-            <p>This is a bit field with the following definition:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+        <tr>
+          <td><p>Record Set #N Section #K Type</p></td>
+          <td>
+	    <p>This is the type of the section record, used to decode the
+        <em>record set #N section #K data</em> information. The defined 
+        record type for <em>file</em> client is:
+        
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Type</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>If set, the message data is constant.  This is used
-                    for messages like the datatype message of a dataset.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>If set, the message is <em>shared</em> and stored 
-                    in another location than the object header.  The Header
-                    Message Data field contains a Shared Message
-                    (described in the <a href="#ObjectHeaderMessages">Data Object Header Messages</a>
-                    section below)
-                    and the Size of Header Message Data field
-                    contains the size of that Shared Message.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2</code></td>
-                  <td>If set, the message should not be shared.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>3</code></td>
-                  <td>If set, the HDF5 decoder should fail to open this object
-                    if it does not understand the message’s type and the file
-                    is open with permissions allowing write access to the file.
-                    (Normally, unknown messages can just be ignored by HDF5
-                    decoders)
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4</code></td>
-                  <td>If set, the HDF5 decoder should set bit 5 of this
-                    message’s flags (in other words, this bit field) 
-                    if it does not understand the message’s type 
-                    and the object is modified in any way. (Normally, 
-                    unknown messages can just be ignored by HDF5
-                    decoders)
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>5</code></td>
-                  <td>If set, this object was modified by software that did not
-                    understand this message.
-                    (Normally, unknown messages should just be ignored by HDF5
-                    decoders)  (Can be used to invalidate an index or a similar
-                    feature)
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>6</code></td>
-                  <td>If set, this message is shareable.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>7</code></td>
-                  <td>If set, the HDF5 decoder should always fail to open this
-                    object if it does not understand the message’s type (whether
-                    it is open for read-only or read-write access).  (Normally,
-                    unknown messages can just be ignored by HDF5 decoders)
-                  </td>
-                </tr>
-	    </table></p>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>File’s section (a range of actual bytes in file)
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table></p>
+	    
+	    <p>The defined record types for a <em>fractal heap</em> client are:
+        
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Type</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Fractal heap “single” section
+                      </td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Fractal heap “first row” section
+                      </td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>Fractal heap “normal row” section
+                      </td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>Fractal heap “indirect” section
+                      </td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>4+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table></p>
             
           </td>
         </tr>
 
-	<tr>
-	  <td><p>Header Message #n Data</p></td>
-	  <td>
-            <p>The format and length of this field is determined by the
-                header message type and size respectively.  Some header
-                message types do not require any data and this information
-                can be eliminated by setting the length of the message to
-                zero. The data is padded with enough zeroes to make the
-                size a multiple of eight.
+        <tr>
+          <td><p>Record Set #N Section #K Data</p></td>
+          <td>
+	    <p>This is the section-type specific information for each record
+                in the record set, described below.
             </p>
           </td>
-	</tr>
+        </tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+	    <p>This is the checksum for the <em>Free-space Section List</em>.
+            </p>
+          </td>
+        </tr>
+
       </table>
     </div>
 
-<br />
-<h4><a name="V2ObjectHeaderPrefix">
-IV.A.1.b. Version 2 Data Object Header Prefix</a></h4>
-
-    <p>Note that the “total number of messages” field has been dropped from
-        the data object header prefix in this version.  The number of messages
-        in the data object header is just determined by the messages encountered
-        in all the object header blocks.</p>
-
-    <p>Note also that the fields and messages in this version of data object
-        headers have <em>no</em> alignment or padding bytes inserted - they are 
-        stored packed together.</p>
+    <br />
+    <p>
+        The section-type specific data for each free-space section record is
+        described below:
+    </p>
 
     <div align="center">
       <table class="format">
-	<caption>
-	  Version 2 Object Header
-	</caption>
-
-	<tr>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Signature</td>
-	</tr>
-	<tr>
-	  <td>Version</td>
-	  <td>Flags</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <caption>
+            Layout: File’s Section Data Record
+        </caption>
 
-	<tr>
-	  <td colspan="4">Access time <em>(optional)</em></td>
-	</tr>
+        <tr>
+          <td colspan="4"><em>No additional record data stored</em></td>
+        </tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="4">Modification Time <em>(optional)</em></td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap “Single” Section Data Record
+        </caption>
 
-	<tr>
-	  <td colspan="4">Change Time <em>(optional)</em></td>
-	</tr>
+        <tr>
+          <td colspan="4"><em>No additional record data stored</em></td>
+        </tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="4">Birth Time <em>(optional)</em></td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap “First Row” Section Data 
+            Record
+        </caption>
 
-	<tr>
-	  <td colspan="2">Maximum # of compact attributes <em>(optional)</em></td>
-	  <td colspan="2">Minimum # of dense attributes <em>(optional)</em></td>
-	</tr>
+        <tr>
+          <td colspan="4"><em>Same format as “indirect” 
+          section data</em></td>
+        </tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td>Size of Chunk #0 <em>(variable size)</em></td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap “Normal Row” Section Data 
+            Record
+        </caption>
 
-	<tr>
-	  <td>Header Message Type #1</td>
-	  <td colspan="2">Size of Header Message Data #1</td>
-	  <td>Header Message #1 Flags</td>
-	</tr>
+        <tr>
+          <td colspan="4"><em>No additional record data stored</em></td>
+        </tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Fractal Heap “Indirect” Section 
+            Data Record
+        </caption>
 
-	<tr>
-	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
-	</tr>
+        <tr>
+          <td colspan="4">Fractal Heap Indirect Block Offset <em>(variable size)</em></td>
+        </tr>
 
-	<tr>
-	  <td>Header Message Type #n</td>
-	  <td colspan="2">Size of Header Message Data #n</td>
-	  <td>Header Message #n Flags</td>
-	</tr>
+        <tr>
+          <td colspan="2">Block Start Row</td>
+          <td colspan="2">Block Start Column</td>
+        </tr>
 
-	<tr>
-	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
+        <tr>
+          <td colspan="2">Number of Blocks</td>
           <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Checksum</td>
-	</tr>
+        </tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fractal Heap “Indirect” Section 
+            Data Record
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Signature</p></td>
-	  <td>
-            <p>The ASCII character string “<code>OHDR</code>”
-                is used to indicate the
-                beginning of an object header.  This gives file consistency
-                checking utilities a better chance of reconstructing a
-                damaged file.
-	    </p>
-	  </td>
-	</tr>
-	
-	<tr>
-	  <td><p>Version</p></td>
-	  <td>
-            <p>This field has a value of 2 indicating version 2 of the object header.
+        <tr>
+          <td><p>Fractal Heap Block Offset</p></td>
+          <td>
+            <p>The offset of the indirect block in the fractal heap’s address
+                space containing the empty blocks.
+            </p>
+            <p>
+                The number of bytes used to encode this field is the minimum
+                number of bytes needed to encode values for the <em>Maximum
+                Heap Size</em> (in the fractal heap’s header).
             </p>
           </td>
-	</tr>
+        </tr>
+          
+        <tr>
+          <td><p>Block Start Row</p></td>
+          <td>
+            <p>This is the row that the empty blocks start in.
+	    </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Flags</p></td>
-	  <td>
-            <p>This field is a bit field indicating additional information
-                about the object header.
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit(s)</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+        <tr>
+          <td><p>Block Start Column</p></td>
+          <td>
+            <p>This is the column that the empty blocks start in.
+	    </p>
+          </td>
+        </tr>
 
-                <tr>
-                  <td align="center"><code>0-1</code></td>
-                  <td>This two bit field determines the size of the
-                    <em>Size of Chunk #0</em> field.  The values are:
-                    <table class="list">
-                        <tr>
-                          <th width="20%" align="center">Value</th>
-                          <th width="80%" align="left">Description</th>
-                        </tr>
+        <tr>
+          <td><p>Number of Blocks</p></td>
+          <td>
+            <p>This is the number of empty blocks covered by the section.
+	    </p>
+          </td>
+        </tr>
+      </table>
+    </div>
 
-                        <tr>
-                          <td align="center"><code>0</code></td>
-                          <td>The <em>Size of Chunk #0</em> field is 1 byte.
-                          </td>
-                        </tr>
-                        <tr>
-                          <td align="center"><code>1</code></td>
-                          <td>The <em>Size of Chunk #0</em> field is 2 bytes.
-                          </td>
-                        </tr>
-                        <tr>
-                          <td align="center"><code>2</code></td>
-                          <td>The <em>Size of Chunk #0</em> field is 4 bytes.
-                          </td>
-                        </tr>
-                        <tr>
-                          <td align="center"><code>3</code></td>
-                          <td>The <em>Size of Chunk #0</em> field is 8 bytes.
-                          </td>
-                        </tr>
-                    </table></p>
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2</code></td>
-                  <td>If set, attribute creation order is tracked.</td>
-                </tr>
-                <tr>
-                  <td align="center"><code>3</code></td>
-                  <td>If set, attribute creation order is indexed.</td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4</code></td>
-                  <td>If set, non-default attribute storage phase change
-                      values are stored.</td>
-                </tr>
-                <tr>
-                  <td align="center"><code>5</code></td>
-                  <td>If set, access, modification, change and birth times
-                      are stored.</td>
-                </tr>
-                <tr>
-                  <td align="center"><code>6-7</code></td>
-                  <td>Reserved</td>
-                </tr>
-	    </table></p>
-            
-          </td>
-	</tr>
+<h3><a name="SOHMTable">
+III.I. Disk Format: Level 1I - Shared Object Header Message Table</a></h3>
 
-	<tr>
-	  <td><p>Access Time</p></td>
-	  <td>
-            <p>This 32-bit value represents the number of seconds after the
-                UNIX epoch when the object’s raw data was last accessed 
-                (in other  words, read or written).
-            </p>
-	    <p>This field is present if bit 5 of <em>flags</em> is set.
-            </p>
-          </td>
+        <p>
+            The <em>shared object header message table</em> is used to locate
+            object
+            header messages that are shared between two or more object headers
+            in the file.  Shared object header messages are stored and indexed
+            in the file in one of two ways: indexed sequentially in a
+            <em>shared header message list</em> or indexed with a v2 B-tree.
+            The shared messages themselves are either stored in a fractal
+            heap (when two or more objects share the message), or remain in an
+            object’s header (when only one object uses the message currently,
+            but the message can be shared in the future).
+        </p>
+
+        <p>
+            The <em>shared object header message table</em>
+            contains a list of shared message index headers.  Each index header
+            records information about the version of the index format, the index
+            storage type, flags for the message types indexed, the number of
+            messages in the index, the address where the index resides,
+            and the fractal heap address if shared messages are stored there.
+        </p>
+
+        <p>
+            Each index can be either a list or a v2 B-tree and may transition
+            between those two forms as the number of messages in the index
+            varies.  Each shared message record contains information used to
+            locate the shared message from either a fractal heap or an object
+            header.  The types of messages that can be shared are: <em>Dataspace,
+            Datatype, Fill Value, Filter Pipeline and Attribute</em>.
+        </p>
+
+        <p>
+            The <em>shared object header message table</em> is pointed to
+            from a <a href="#SOHMTableMessage">shared message table</a> message
+            in the superblock extension for a file.  This message stores the
+            version of the table format, along with the number of index headers
+            in the table.
+        </p>
+
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Shared Object Header Message Table
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
+
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version for index #0</td>
+          <td>Index Type for index #0</td>
+          <td colspan="2">Message Type Flags for index #0</td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Minimum Message Size for index #0</td>
+        </tr>
+
+        <tr>
+          <td colspan="2">List Cutoff for index #0</td>
+          <td colspan="2">v2 B-tree Cutoff for index #0</td>
+        </tr>
+
+        <tr>
+          <td colspan="2">Number of Messages for index #0</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Modification Time</p></td>
-	  <td>
-            <p>This 32-bit value represents the number of seconds after 
-            the UNIX epoch when the object’s raw data was last 
-            modified (in other words, written).
-            </p>
-	    <p>This field is present if bit 5 of <em>flags</em> is set.
-            </p>
-          </td>
+	  <td colspan="4"><br />Index Address<sup>O</sup> for index #0<br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td><p>Change Time</p></td>
-	  <td>
-            <p>This 32-bit value represents the number of seconds after the
-                UNIX epoch when the object’s metadata was last changed.
-            </p>
-	    <p>This field is present if bit 5 of <em>flags</em> is set.
-            </p>
-          </td>
+	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #0<br /><br /></td>
 	</tr>
 
-	<tr>
-	  <td><p>Birth Time</p></td>
-	  <td>
-            <p>This 32-bit value represents the number of seconds after the
-                UNIX epoch when the object was created.
-            </p>
-	    <p>This field is present if bit 5 of <em>flags</em> is set.
-            </p>
-          </td>
+        <tr>
+          <td colspan="4">...</td>
 	</tr>
 
-	<tr>
-	  <td><p>Maximum # of compact attributes</p></td>
-	  <td>
-            <p>This is the maximum number of attributes to store in the compact
-                format before switching to the indexed format.
-            </p>
-	    <p>This field is present if bit 4 of <em>flags</em> is set.
-            </p>
-          </td>
+        <tr>
+          <td colspan="4">...</td>
 	</tr>
 
-	<tr>
-	  <td><p>Minimum # of dense attributes</p></td>
-	  <td>
-            <p>This is the minimum number of attributes to store in the indexed
-                format before switching to the compact format.
-            </p>
-	    <p>This field is present if bit 4 of <em>flags</em> is set.
-            </p>
-          </td>
+        <tr>
+          <td>Version for index #N-1</td>
+          <td>Index Type for index #N-1</td>
+          <td colspan="2">Message Type Flags for index #N-1</td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Minimum Message Size for index #N-1</td>
+        </tr>
+
+        <tr>
+          <td colspan="2">List Cutoff for index #N-1</td>
+          <td colspan="2">v2 B-tree Cutoff for index #N-1</td>
+        </tr>
+
+        <tr>
+          <td colspan="2">Number of Messages for index #N-1</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Size of Chunk #0</p></td>
-	  <td>
-            <p>
-               This unsigned value specifies the number of bytes of header
-               message data following this field that contain object header
-               information.
-            </p>
-            <p>
-               This value does not include the size of object header
-               continuation blocks for this object elsewhere in the file.
-            </p>
-            <p>
-	       The length of this field varies depending on bits 0 and 1 of
-	       the <em>flags</em> field.
-            </p>
-          </td>
+	  <td colspan="4"><br />Index Address<sup>O</sup> for index #N-1<br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td><p>Header Message #n Type</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-            </p>
-          </td>
+	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #N-1<br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td><p>Size of Header Message #n Data</p></td>
-	  <td>
-            <p>This value specifies the number of bytes of header
-                message data following the header message type and length
-                information for the current message. The size of messages
-                in this version does <em>not</em> include any padding bytes.
-            </p>
-          </td>
+	  <td colspan="4">Checksum</td>
 	</tr>
+      </table>
 
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Shared Object Header Message Table
+        </caption>
 	<tr>
-	  <td><p>Header Message #n Flags</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-            </p>
-          </td>
+          <th width="35%">Field Name</th>
+          <th>Description</th>
         </tr>
 
-	<tr>
-	  <td><p>Header Message #n Creation Order</p></td>
-	  <td>
-            <p>This field stores the order that a message of a given type
-                was created in.
-            </p>
-	    <p>This field is present if bit 2 of <em>flags</em> is set.
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>SMTB</code>” 
+            is used to indicate the beginning of the Shared Object 
+            Header Message table. This gives file consistency checking 
+            utilities a better chance of reconstructing a damaged file.
             </p>
           </td>
         </tr>
+          
+        <tr>
+          <td><p>Version for index #N</p></td>
+          <td>
+            <p>This is the version number for the list of shared object header message
+		indexes and this document describes version 0.</p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Header Message #n Data</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
+        <tr>
+          <td><p>Index Type for index #N</p></td>
+          <td>
+            <p>The type of index can be an unsorted list or a v2 B-tree.
             </p>
           </td>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Gap</p></td>
+          <td><p>Message Type Flags for index #N</p></td>
 	  <td>
-            <p>A gap in an object header chunk is inferred by the end of the
-                messages for the chunk before the beginning of the chunk’s
-                checksum.  Gaps are always smaller than the size of an
-                object header message prefix (message type + message size +
-                message flags).
-            </p>
-            <p>Gaps are formed when a message (typically an attribute message)
-                in an earlier chunk is deleted and a message from a later
-                chunk that does not quite fit into the free space is moved
-                into the earlier chunk.
+            <p>This field indicates the type of messages tracked in the index,
+                as follows:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Bits</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>If set, the index tracks <em>Dataspace Messages</em>.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>If set, the message tracks <em>Datatype Messages</em>.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>If set, the message tracks <em>Fill Value Messages</em>.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>If set, the message tracks <em>Filter Pipeline Messages</em>.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>4</code></td>
+                      <td>If set, the message tracks <em>Attribute Messages</em>.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>5-15</code></td>
+                      <td>Reserved (zero).
+                      </td>
+                    </tr>
+                </table></p>
+            
+
+            <p>
+                An index can track more than one type of message, but each type
+                of message can only by in one index.
             </p>
           </td>
 	</tr>
 
         <tr>
-          <td><p>Checksum</p></td>
+          <td><p>Minimum Message Size for index #N</p></td>
           <td>
-            <p>This is the checksum for the object header chunk.
+	    <p>This is the message size sharing threshold for the index.
+		If the encoded size of the message is less than this value, the
+                message is not shared.
             </p>
           </td>
         </tr>
-      </table>
-    </div>
 
-    <p>The header message types and the message data associated with
-      them compose the critical “metadata” about each object.  Some
-      header messages are required for each object while others are
-      optional.  Some optional header messages may also be repeated
-      several times in the header itself, the requirements and number
-      of times allowed in the header will be noted in each header
-      message description below.
-    </p>
+	<tr>
+	  <td><p>List Cutoff for index #N</p></td>
+	  <td>
+	    <p>This is the cutoff value for the indexing of messages to
+                switch from a list to a v2 B-tree.  If the number of messages
+                is greater than this value, the index should be a v2 B-tree.
+            </p>
+	  </td>
+	</tr>
+	<tr>
+	  <td><p>v2 B-tree Cutoff for index #N</p></td>
+	  <td>
+            <p>This is the cutoff value for the indexing of messages 
+            to switch from a v2 B-tree back to a list. If the number 
+            of messages is less than this value, the index should be 
+            a list.
+            </p>
+	  </td>
+        </tr>
 
+        <tr>
+          <td><p>Number of Messages for index #N</p></td>
+          <td>
+	    <p>The number of shared messages being tracked for the index.
+            </p>
+          </td>
+        </tr>
 
-<br />
-<h3><a name="ObjectHeaderMessages">
-IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
+        <tr>
+          <td><p>Index Address for index #N</p></td>
+          <td>
+	    <p>This field is the address of the list or v2 B-tree where the
+                index nodes reside.
+            </p>
+          </td>
+        </tr>
 
-    <p>Data object header messages are small pieces of metadata that are
-      stored in the data object header for each object in an HDF5 file.
-      Data object header messages provide the metadata required to describe
-      an object and its contents, as well as optional pieces of metadata
-      that annotate the meaning or purpose of the object.
-    </p>
+        <tr>
+          <td><p>Fractal Heap Address for index #N</p></td>
+          <td>
+	    <p>This field is the address of the fractal heap if shared messages
+                are stored there.
+            </p>
+          </td>
+        </tr>
 
-    <p>Data object header messages are either stored directly in the data
-      object header for the object or are shared between multiple objects
-      in the file.  When a message is shared, a flag in the <em>Message Flags</em>
-      indicates that the actual <em>Message Data</em>
-      portion of that message is stored in another location (such as another
-      data object header, or a heap in the file) and the <em>Message Data</em>
-      field contains the information needed to locate the actual information
-      for the message.
-    </p>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the table.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
 
+    <br />
     <p>
-    The format of shared message data is described here:</p>
+        Shared messages are indexed either with a <em>shared message record
+        list</em>, described below, or using a v2 B-tree (using record type 7).
+        The number of records in the <em>shared message record list</em> is
+        determined in the index’s entry in the <em>shared object header message
+        table</em>.
+    </p>
 
     <div align="center">
       <table class="format">
-	<caption>
-	  Shared Message (Version 1)
-	</caption>
+        <caption>
+            Layout: Shared Message Record List
+        </caption>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td>Type</td>
-	  <td colspan="2">Reserved (zero)</td>
-	</tr>
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td colspan="4">Shared Message Record #0</td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Reserved (zero)</td>
-	</tr>
+        <tr>
+          <td colspan="4">Shared Message Record #1</td>
+        </tr>
 
-	<tr>
-	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
-	</tr>
-      </table>
+        <tr>
+          <td colspan="4">...</td>
+        </tr>
 
-      <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
+          <td colspan="4">Shared Message Record #N-1</td>
+        </tr>
 
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
+      </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Shared Message Record List
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number is used when there are changes in the format
-            of a shared object message and is described here:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Version</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>SMLI</code>” 
+            is used to indicate the beginning of a list of index nodes. 
+            This gives file consistency checking utilities a better 
+            chance of reconstructing a damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Shared Message Record #N</p></td>
+          <td>
+            <p>The record for locating the shared message, either in the
+                fractal heap for the index, or an object header (see format for
+                <em>index nodes</em> below).
+	    </p>
+          </td>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>Never used.</td>
-	      </tr>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the list.
+            </p>
+          </td>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>Used by the library before version 1.6.1.
-                </td>
-	      </tr>
-	    </table></p>
-        </td>
-	</tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td><p>Type</p></td>
-	  <td><p>The type of shared message location:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Value</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+    <br />
+    <p>
+        The record for each shared message in an index is stored in one 
+        of the following forms:
+    </p>
 
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>Message stored in another object’s header (a <em>committed</em>
-                    message).
-                </td>
-	      </tr>
-	    </table></p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Address</p></td>
-	  <td><p>The address of the object header
-            containing the message to be shared.</p>
-          </td>
-	</tr>
-      </table>
-    </div>
-
-    <br />
-    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  Shared Message (Version 2)
-	</caption>
+        <caption>
+            Layout: Shared Message Record for Messages Stored in a 
+            Fractal Heap
+        </caption>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td>Type</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td>Message Location</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        </tr>
+          
+        <tr>
+          <td colspan="4">Hash Value</td>
+        </tr>
 
-	<tr>
-	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
-	</tr>
-      </table>
+        <tr>
+          <td colspan="4">Reference Count</td>
+        </tr>
 
-      <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+          <td colspan="4"><br />Fractal Heap ID<br /><br /></td>
+        </tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Shared Message Record for Messages Stored in a 
+            Fractal Heap
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-	</tr>
-
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number is used when there are changes in the format
-            of a shared object message and is described here:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Version</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>2</code></td>
-		<td>Used by the library of version 1.6.1 and after.
-                </td>
-	      </tr>
-	    </table></p>
+        <tr>
+          <td><p>Message Location</p></td>
+          <td>
+            <p>This has a value of 0 indicating that the message is stored in
+                the heap.
+            </p>
           </td>
-	</tr>
-
-	<tr>
-	  <td><p>Type</p></td>
-	  <td><p>The type of shared message location:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Value</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+        </tr>
+          
+        <tr>
+          <td><p>Hash Value</p></td>
+          <td>
+            <p>This is the hash value for the message.
+	    </p>
+          </td>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>Message stored in another object’s header (a <em>committed</em>
-                    message).
-                </td>
-	      </tr>
-	    </table></p>
+        <tr>
+          <td><p>Reference Count</p></td>
+          <td>
+            <p>This is the number of times the message is used in the file.
+            </p>
           </td>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Address</p></td>
-	  <td><p>The address of the object header
-            containing the message to be shared.</p></td>
-	</tr>
+        <tr>
+          <td><p>Fractal Heap ID</p></td>
+          <td>
+	    <p>This is an 8-byte fractal heap ID for the message as stored in
+                the fractal heap for the index.
+            </p>
+          </td>
+        </tr>
       </table>
     </div>
 
     <br />
     <br />
+    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  Shared Message (Version 3)
-	</caption>
+        <caption>
+            Layout: Shared Message Record for Messages Stored in an 
+            Object Header
+        </caption>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td>Type</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td>Message Location</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+        </tr>
+          
+        <tr>
+          <td colspan="4">Hash Value</td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Location <em>(variable size)</em></td>
-	</tr>
+        <tr>
+          <td>Reserved</td>
+          <td>Message Type</td>
+          <td colspan="2">Creation Index</td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Object Header Address<sup>O</sup><br /><br /></td>
+        </tr>
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Shared Message Record for Messages Stored in an 
+            Object Header
+        </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number indicates changes in the format of shared 
-	    object message and is described here:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Version</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+        <tr>
+          <td><p>Message Location</p></td>
+          <td>
+            <p>This has a value of 1 indicating that the message is stored in
+                an object header.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Hash Value</p></td>
+          <td>
+            <p>This is the hash value for the message.
+	    </p>
+          </td>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>3</code></td>
-		<td>Used by the library of version 1.8 and after.  In this
-                    version, the <em>Type</em> field can indicate that
-                    the message is stored in the fractal heap.
-                </td>
-	      </tr>
-	    </table></p>
-        </td>
-	</tr>
+        <tr>
+          <td><p>Message Type</p></td>
+          <td>
+            <p>This is the message type in the object header.
+            </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Type</p></td>
-	  <td><p>The type of shared message location:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Value</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+        <tr>
+          <td><p>Creation Index</p></td>
+          <td>
+	    <p>This is the creation index of the message within the object
+                header.
+            </p>
+          </td>
+        </tr>
 
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>Message is not shared and is not shareable.
-                </td>
-	      </tr>
+        <tr>
+          <td><p>Object Header Address</p></td>
+          <td>
+	    <p>This is the address of the object header where the message is
+                located.
+            </p>
+          </td>
+        </tr>
+      </table>
+    </div>
 
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>Message stored in file’s <em>shared object header message</em>
-                    heap (a <em>shared</em> message).
-                </td>
-	      </tr>
+<h2><a name="DataObject">
+IV. Disk Format: Level 2 - Data Objects </a></h2>
 
-	      <tr>
-		<td align="center"><code>2</code></td>
-		<td>Message stored in another object’s header (a <em>committed</em>
-                    message).
-                </td>
-	      </tr>
+    <p>Data objects contain the “real” user-visible information in the file.
+      These objects compose the scientific data and other information which
+      are generally thought of as “data” by the end-user.  All the
+      other information in the file is provided as a framework for
+      storing and accessing these data objects.
+    </p>
 
-	      <tr>
-		<td align="center"><code>3</code></td>
-		<td>Message stored is not shared, but is sharable.
-                </td>
-	      </tr>
+    <p>A data object is composed of header and data
+      information.  The header information contains the information
+      needed to interpret the data information for the object as
+      well as additional “metadata” or pointers to additional
+      “metadata” used to describe or annotate each object.
+    </p>
 
-	    </table></p>
-          </td>
-	</tr>
+<h3><a name="ObjectHeader">
+IV.A. Disk Format: Level 2A - Data Object Headers</a></h3>
 
-	<tr>
-	  <td><p>Location</p></td>
-	  <td><p>This field contains either a <em>Size of Offsets</em>-bytes
-            address of the object header
-            containing the message to be shared, or an 8-byte fractal heap ID
-            for the message in the file’s <em>shared object header message</em>
-            heap.
-	    </p>
-          </td>
-	</tr>
-      </table>
-    </div>
-    
+    <p>The header information of an object is designed to encompass
+    all of the information about an object, except for the data itself. 
+    This information includes the dataspace, the datatype, information 
+    about how the data is stored on disk (in external files, compressed, 
+    broken up in blocks, and so on), as well as other information used 
+    by the library to speed up access to the data objects or maintain 
+    a file’s integrity. Information stored by user applications 
+    as attributes is also stored in the object’s header. The header 
+    of each object is not necessarily located immediately prior to the 
+    object’s data in the file and in fact may be located in any 
+    position in the file. The order of the messages in an object header 
+    is not significant.</p>
 
-    <p>The following is a list of currently defined header messages:
+    <p>Object headers are composed of a prefix and a set of messages.  The
+      prefix contains the information needed to interpret the messages and
+      a small amount of metadata about the object, and the messages contain
+      the majority of the metadata about the object.
     </p>
 
-<br />
-<h4><a name="NILMessage">IV.A.2.a. The NIL Message</a></h4>
+<h3><a name="ObjectHeaderPrefix">
+IV.A.1. Disk Format: Level 2A1 - Data Object Header Prefix</a></h3>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> NIL</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0000</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may be repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>The NIL message is used to indicate a message which is to be 
-      ignored when reading the header messages for a data object. 
-      [Possibly one which has been deleted for some reason.]
-    </td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> Unspecified</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
 
-<br />
-<h4><a name="DataspaceMessage">IV.A.2.b. The Dataspace Message</a></h4>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Dataspace</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0001</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies according to the number of 
-      dimensions, as described in the following table.</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Required for dataset objects; 
-      may not be repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>The dataspace message describes the number of dimensions (in 
-      other words, “rank”) and size of each dimension that 
-      the data object has. This message is only used for datasets which 
-      have a simple, rectilinear, array-like layout; datasets requiring 
-      a more complex layout are not yet supported.
-    </td>
-    </tr>
-    
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
+<h4><a name="V1ObjectHeaderPrefix">
+IV.A.1.a. Version 1 Data Object Header Prefix</a></h4>
+
+    <p>Header messages are aligned on 8-byte boundaries for version 1 
+        object headers.
+    </p>
+
     <div align="center">
       <table class="format">
-	<caption>
-	  Dataspace Message - Version 1
-	</caption>
+    <caption>
+        Layout: Version 1 Object Header
+    </caption>
 
 	<tr>
 	  <th>byte</th>
@@ -8014,57 +8402,58 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Dimensionality</td>
-	  <td>Flags</td>
-	  <td>Reserved</td>
+	  <td>Reserved (zero)</td>
+	  <td colspan="2">Total Number of Header Messages</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Reserved</td>
+	  <td colspan="4">Object Reference Count</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
-    </tr>
+	  <td colspan="4">Object Header Size</td>
+	</tr>
+
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td colspan="2">Header Message Type #1</td>
+	  <td colspan="2">Size of Header Message Data #1</td>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
+	  <td>Header Message #1 Flags</td>
+	  <td colspan="3">Reserved (zero)</td>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
 	</tr>
+
 	<tr>
 	  <td colspan="4">.<br />.<br />.<br /></td>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	  <td colspan="2">Header Message Type #n</td>
+	  <td colspan="2">Size of Header Message Data #n</td>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Permutation Index #1<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	  <td>Header Message #n Flags</td>
+	  <td colspan="3">Reserved (zero)</td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
 	</tr>
-	<tr>
-	  <td colspan="4"><br />Permutation Index #n<sup>L</sup> <em>(optional)</em><br /><br /></td>
-    </tr>
-	  </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Version 1 Object Header
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -8074,156 +8463,294 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 	  <td><p>Version</p></td>
 	  <td>
             <p>This value is used to determine the format of the
-	    Dataspace Message.  When the format of the
-	    information in the message is changed, the version number
-	    is incremented and can be used to determine how the
-	    information in the object header is formatted.  This
-            document describes version one (1) (there was no version
-            zero (0)).
+                information in the object header.  When the format of the
+                object header is changed, the version number
+                is incremented and can be used to determine how the
+                information in the object header is formatted.  This
+                is version one (1) (there was no version zero (0)) of the
+                object header.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
+	  <td><p>Total Number of Header Messages</p></td>
 	  <td>
-            <p>This value is the number of dimensions that the data
-	    object has.
+            <p>This value determines the total number of messages listed in
+                object headers for this object.  This value includes the messages
+                in continuation messages for this object.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Flags</p></td>
+	  <td><p>Object Reference Count</p></td>
 	  <td>
-            <p>This field is used to store flags to indicate the
-	    presence of parts of this message.  Bit 0 (the least
-	    significant bit) is used to indicate that maximum
-	    dimensions are present.  Bit 1 is used to indicate that
-	    permutation indices are present.
+            <p>This value specifies the number of “hard links” to this object
+                within the current file.  References to the object from external
+                files, “soft links” in this file and object references in this
+                file are not tracked.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Size</p></td>
+	  <td><p>Object Header Size</p></td>
 	  <td>
-            <p>This value is the current size of the dimension of the
-	    data as stored in the file.  The first dimension stored in
-	    the list of dimensions is the slowest changing dimension
-	    and the last dimension stored is the fastest changing
-	    dimension.
+            <p>This value specifies the number of bytes of header message data
+                following this length field that contain object header messages
+                for this object header.  This value does not include the size of
+                object header continuation blocks for this object elsewhere in the
+                file.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Maximum Size</p></td>
+	  <td><p>Header Message #n Type</p></td>
 	  <td>
-            <p>This value is the maximum size of the dimension of the
-	    data as stored in the file.  This value may be the special
-            “<a href="#UnlimitedDim">unlimited</a>” size which indicates
-	    that the data may expand along this dimension indefinitely.
-            If these values are not stored, the maximum size of each
-            dimension is assumed to be the dimension’s current size.
+            <p>This value specifies the type of information included in the
+                following header message data.  The message types for 
+                header messages are defined in sections below.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Permutation Index #n</p></td>
+	  <td><p>Size of Header Message #n Data</p></td>
 	  <td>
-            <p>This value is the index permutation used to map
-	    each dimension from the canonical representation to an
-	    alternate axis for each dimension.  If these values are
-	    not stored, the first dimension stored in the list of
-	    dimensions is the slowest changing dimension and the last
-	    dimension stored is the fastest changing dimension.
+            <p>This value specifies the number of bytes of header
+                message data following the header message type and length
+                information for the current message. The size includes
+                padding bytes to make the message a multiple of eight
+                bytes.
             </p>
           </td>
 	</tr>
-      </table>
-    </div>
-
-    
-
-    <br />
-    <p>Version 2 of the dataspace message dropped the optional 
-    permutation index value support, as it was never implemented in the 
-    HDF5 Library:</p>
-
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Dataspace Message - Version 2
-	</caption>
 
 	<tr>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	</tr>
+	  <td><p>Header Message #n Flags</p></td>
+	  <td>
+            <p>This is a bit field with the following definition:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td>Dimensionality</td>
-	  <td>Flags</td>
-	  <td>Type</td>
-	</tr>
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>If set, the message data is constant.  This is used
+                    for messages like the datatype message of a dataset.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>If set, the message is <em>shared</em> and stored 
+                    in another location than the object header.  The Header
+                    Message Data field contains a Shared Message
+                    (described in the <a href="#ObjectHeaderMessages">Data Object Header Messages</a>
+                    section below)
+                    and the Size of Header Message Data field
+                    contains the size of that Shared Message.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>2</code></td>
+                  <td>If set, the message should not be shared.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>3</code></td>
+                  <td>If set, the HDF5 decoder should fail to open this object
+                    if it does not understand the message’s type and the file
+                    is open with permissions allowing write access to the file.
+                    (Normally, unknown messages can just be ignored by HDF5
+                    decoders)
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4</code></td>
+                  <td>If set, the HDF5 decoder should set bit 5 of this
+                    message’s flags (in other words, this bit field) 
+                    if it does not understand the message’s type 
+                    and the object is modified in any way. (Normally, 
+                    unknown messages can just be ignored by HDF5
+                    decoders)
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>5</code></td>
+                  <td>If set, this object was modified by software that did not
+                    understand this message.
+                    (Normally, unknown messages should just be ignored by HDF5
+                    decoders)  (Can be used to invalidate an index or a similar
+                    feature)
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>6</code></td>
+                  <td>If set, this message is shareable.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>7</code></td>
+                  <td>If set, the HDF5 decoder should always fail to open this
+                    object if it does not understand the message’s type (whether
+                    it is open for read-only or read-write access).  (Normally,
+                    unknown messages can just be ignored by HDF5 decoders)
+                  </td>
+                </tr>
+	    </table></p>
+            
+          </td>
+        </tr>
 
 	<tr>
-	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
-      </tr>
+	  <td><p>Header Message #n Data</p></td>
+	  <td>
+            <p>The format and length of this field is determined by the
+                header message type and size respectively.  Some header
+                message types do not require any data and this information
+                can be eliminated by setting the length of the message to
+                zero. The data is padded with enough zeroes to make the
+                size a multiple of eight.
+            </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+
+<h4><a name="V2ObjectHeaderPrefix">
+IV.A.1.b. Version 2 Data Object Header Prefix</a></h4>
+
+    <p>Note that the “total number of messages” field has been dropped from
+        the data object header prefix in this version.  The number of messages
+        in the data object header is just determined by the messages encountered
+        in all the object header blocks.</p>
+
+    <p>Note also that the fields and messages in this version of data object
+        headers have <em>no</em> alignment or padding bytes inserted - they are 
+        stored packed together.</p>
+
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Version 2 Object Header
+    </caption>
+
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
-      </tr>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
-      </tr>
+	  <td colspan="4">Signature</td>
+	</tr>
 	<tr>
-	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
-      </tr>
+	  <td>Version</td>
+	  <td>Flags</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Access time <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Modification Time <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Change Time <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Birth Time <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Maximum # of compact attributes <em>(optional)</em></td>
+	  <td colspan="2">Minimum # of dense attributes <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td>Size of Chunk #0 <em>(variable size)</em></td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td>Header Message Type #1</td>
+	  <td colspan="2">Size of Header Message Data #1</td>
+	  <td>Header Message #1 Flags</td>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
+	</tr>
+
 	<tr>
 	  <td colspan="4">.<br />.<br />.<br /></td>
-      </tr>
+	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
-      </tr>
-      </table>
+	  <td>Header Message Type #n</td>
+	  <td colspan="2">Size of Header Message Data #n</td>
+	  <td>Header Message #n Flags</td>
+	</tr>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+	<tr>
+	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Checksum</td>
+	</tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Version 2 Object Header
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Version</p></td>
+	  <td><p>Signature</p></td>
 	  <td>
-            <p>This value is used to determine the format of the
-                Dataspace Message.  This field should be ‘2’ for version 2
-                format messages.
-            </p>
-          </td>
+            <p>The ASCII character string “<code>OHDR</code>” 
+            is used to indicate the beginning of an object header. This 
+            gives file consistency checking utilities a better chance 
+            of reconstructing a damaged file.
+	    </p>
+	  </td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>Dimensionality</p></td>
+	  <td><p>Version</p></td>
 	  <td>
-            <p>This value is the number of dimensions that the data object has.
+            <p>This field has a value of 2 indicating version 2 of the object header.
             </p>
           </td>
 	</tr>
@@ -8231,421 +8758,3285 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 	<tr>
 	  <td><p>Flags</p></td>
 	  <td>
-            <p>This field is used to store flags to indicate the
-                presence of parts of this message.  Bit 0 (the least
-                significant bit) is used to indicate that maximum
-                dimensions are present.
-            </p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Type</p></td>
-	  <td>
-            <p>This field indicates the type of the dataspace:
+            <p>This field is a bit field indicating additional information
+                about the object header.
             <table class="list">
                 <tr>
-                  <th width="20%" align="center">Value</th>
+                  <th width="20%" align="center">Bit(s)</th>
                   <th width="80%" align="left">Description</th>
                 </tr>
 
                 <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>A <em>scalar</em> dataspace; in other words, 
-                  a dataspace with a single, dimensionless element.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>A <em>simple</em> dataspace; in other words, 
-                  a dataspace with a rank > 0 and an appropriate # of 
-                  dimensions.
+                  <td align="center"><code>0-1</code></td>
+                  <td>This two bit field determines the size of the
+                    <em>Size of Chunk #0</em> field.  The values are:
+                    <table class="list">
+                        <tr>
+                          <th width="20%" align="center">Value</th>
+                          <th width="80%" align="left">Description</th>
+                        </tr>
+
+                        <tr>
+                          <td align="center"><code>0</code></td>
+                          <td>The <em>Size of Chunk #0</em> field is 1 byte.
+                          </td>
+                        </tr>
+                        <tr>
+                          <td align="center"><code>1</code></td>
+                          <td>The <em>Size of Chunk #0</em> field is 2 bytes.
+                          </td>
+                        </tr>
+                        <tr>
+                          <td align="center"><code>2</code></td>
+                          <td>The <em>Size of Chunk #0</em> field is 4 bytes.
+                          </td>
+                        </tr>
+                        <tr>
+                          <td align="center"><code>3</code></td>
+                          <td>The <em>Size of Chunk #0</em> field is 8 bytes.
+                          </td>
+                        </tr>
+                    </table>
                   </td>
                 </tr>
                 <tr>
                   <td align="center"><code>2</code></td>
-                  <td>A <em>null</em> dataspace; in other words, 
-                  a dataspace with no elements.
-                  </td>
+                  <td>If set, attribute creation order is tracked.</td>
                 </tr>
-            </table></p>
+                <tr>
+                  <td align="center"><code>3</code></td>
+                  <td>If set, attribute creation order is indexed.</td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4</code></td>
+                  <td>If set, non-default attribute storage phase change
+                      values are stored.</td>
+                </tr>
+                <tr>
+                  <td align="center"><code>5</code></td>
+                  <td>If set, access, modification, change and birth times
+                      are stored.</td>
+                </tr>
+                <tr>
+                  <td align="center"><code>6-7</code></td>
+                  <td>Reserved</td>
+                </tr>
+	    </table></p>
+            
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Size</p></td>
+	  <td><p>Access Time</p></td>
 	  <td>
-            <p>This value is the current size of the dimension of the
-                data as stored in the file.  The first dimension stored in
-                the list of dimensions is the slowest changing dimension
-                and the last dimension stored is the fastest changing
-                dimension.
+            <p>This 32-bit value represents the number of seconds after the
+                UNIX epoch when the object’s raw data was last accessed 
+                (in other  words, read or written).
+            </p>
+	    <p>This field is present if bit 5 of <em>flags</em> is set.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Maximum Size</p></td>
+	  <td><p>Modification Time</p></td>
 	  <td>
-            <p>This value is the maximum size of the dimension of the
-                data as stored in the file.  This value may be the special
-                “<a href="#UnlimitedDim">unlimited</a>” size which indicates
-                that the data may expand along this dimension indefinitely.
-                If these values are not stored, the maximum size of each
-                dimension is assumed to be the dimension’s current size.
+            <p>This 32-bit value represents the number of seconds after 
+            the UNIX epoch when the object’s raw data was last 
+            modified (in other words, written).
+            </p>
+	    <p>This field is present if bit 5 of <em>flags</em> is set.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Change Time</p></td>
+	  <td>
+            <p>This 32-bit value represents the number of seconds after the
+                UNIX epoch when the object’s metadata was last changed.
+            </p>
+	    <p>This field is present if bit 5 of <em>flags</em> is set.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Birth Time</p></td>
+	  <td>
+            <p>This 32-bit value represents the number of seconds after the
+                UNIX epoch when the object was created.
+            </p>
+	    <p>This field is present if bit 5 of <em>flags</em> is set.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Maximum # of compact attributes</p></td>
+	  <td>
+            <p>This is the maximum number of attributes to store in the compact
+                format before switching to the indexed format.
+            </p>
+	    <p>This field is present if bit 4 of <em>flags</em> is set.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Minimum # of dense attributes</p></td>
+	  <td>
+            <p>This is the minimum number of attributes to store in the indexed
+                format before switching to the compact format.
+            </p>
+	    <p>This field is present if bit 4 of <em>flags</em> is set.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Size of Chunk #0</p></td>
+	  <td>
+            <p>
+               This unsigned value specifies the number of bytes of header
+               message data following this field that contain object header
+               information.
+            </p>
+            <p>
+               This value does not include the size of object header
+               continuation blocks for this object elsewhere in the file.
+            </p>
+            <p>
+	       The length of this field varies depending on bits 0 and 1 of
+	       the <em>flags</em> field.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Header Message #n Type</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Size of Header Message #n Data</p></td>
+	  <td>
+            <p>This value specifies the number of bytes of header
+                message data following the header message type and length
+                information for the current message. The size of messages
+                in this version does <em>not</em> include any padding bytes.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Header Message #n Flags</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+            </p>
+          </td>
+        </tr>
+
+	<tr>
+	  <td><p>Header Message #n Creation Order</p></td>
+	  <td>
+            <p>This field stores the order that a message of a given type
+                was created in.
+            </p>
+	    <p>This field is present if bit 2 of <em>flags</em> is set.
+            </p>
+          </td>
+        </tr>
+
+	<tr>
+	  <td><p>Header Message #n Data</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
             </p>
           </td>
 	</tr>
 
+	<tr>
+	  <td><p>Gap</p></td>
+	  <td>
+            <p>A gap in an object header chunk is inferred by the end of the
+                messages for the chunk before the beginning of the chunk’s
+                checksum.  Gaps are always smaller than the size of an
+                object header message prefix (message type + message size +
+                message flags).
+            </p>
+            <p>Gaps are formed when a message (typically an attribute message)
+                in an earlier chunk is deleted and a message from a later
+                chunk that does not quite fit into the free space is moved
+                into the earlier chunk.
+            </p>
+          </td>
+	</tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the object header chunk.
+            </p>
+          </td>
+        </tr>
       </table>
     </div>
 
-    
+    <p>The header message types and the message data associated with
+      them compose the critical “metadata” about each object.  Some
+      header messages are required for each object while others are
+      optional.  Some optional header messages may also be repeated
+      several times in the header itself, the requirements and number
+      of times allowed in the header will be noted in each header
+      message description below.
+    </p>
 
-<!--
-<br />
-<h4><a name="DataSpaceMessage">Header Message Name: Complex Dataspace (Fiber Bundle?)</a></h4>
 
-    <!-- start msgdesc table --
-    <center>
-    <table class="msgdesc">
-    <p><b>Header Message Name: ???????</b></td></tr>
-    <b>Header Message Type: </b>0x0002<br />
-    <b>Length:</b> Varies</td></tr>
+<h3><a name="ObjectHeaderMessages">
+IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 
-    <b>Status:</b> One of the <em>Simple Dataspace</em> or
-    <em>Complex Dataspace</em> messages is required (but not both) and may
-    not be repeated.<br /> <b>Description:</b> The
-    <em>Dataspace</em> message describes space that the dataset is
-    mapped onto in a more comprehensive way than the <em>Simple
-    Dimensionality</em> message is capable of handling.  The
-    dataspace of a dataset encompasses the type of coordinate system
-    used to locate the dataset’s elements as well as the structure and
-    regularity of the coordinate system.  The dataspace also
-    describes the number of dimensions which the dataset inhabits as
-    well as a possible higher dimensional space in which the dataset
-    is located within.
+    <p>Data object header messages are small pieces of metadata that are
+      stored in the data object header for each object in an HDF5 file.
+      Data object header messages provide the metadata required to describe
+      an object and its contents, as well as optional pieces of metadata
+      that annotate the meaning or purpose of the object.
+    </p>
 
-    <br />
-    <p><b>Format of Data:</b></p>
+    <p>Data object header messages are either stored directly in the data
+      object header for the object or are shared between multiple objects
+      in the file.  When a message is shared, a flag in the <em>Message Flags</em>
+      indicates that the actual <em>Message Data</em>
+      portion of that message is stored in another location (such as another
+      data object header, or a heap in the file) and the <em>Message Data</em>
+      field contains the information needed to locate the actual information
+      for the message.
+    </p>
 
-    <center>
-      <table border cellpadding="4" width="80%">
-	<caption align="bottom">
-	  <b>HDF5 Dataspace Message Layout</b>
-	</caption>
+    <p>
+    The format of shared message data is described here:</p>
 
-	<tr align="center">
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Shared Message (Version 1)
+    </caption>
+
+	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
-      </tr>
-
-	<tr align="center">
-	  <td colspan="4">Mesh Type</td>
-      </tr>
-	<tr align="center">
-	  <td colspan="4">Logical Dimensionality</td>
-      </tr>
-      </table>
-    </center>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Type</td>
+	  <td colspan="2">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Shared Message (Version 1)
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number is used when there are changes in the format
+            of a shared object message and is described here:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Version</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>Never used.</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>Used by the library before version 1.6.1.
+                </td>
+	      </tr>
+	    </table></p>
+        </td>
+	</tr>
+
+	<tr>
+	  <td><p>Type</p></td>
+	  <td><p>The type of shared message location:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Value</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>Message stored in another object’s header (a <em>committed</em>
+                    message).
+                </td>
+	      </tr>
+	    </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the object header
+            containing the message to be shared.</p>
+          </td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+
+    <caption>
+        Layout: Shared Message (Version 2)
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Type</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Shared Message (Version 2)
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number is used when there are changes in the format
+            of a shared object message and is described here:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Version</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>2</code></td>
+		<td>Used by the library of version 1.6.1 and after.
+                </td>
+	      </tr>
+	    </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Type</p></td>
+	  <td><p>The type of shared message location:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Value</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>Message stored in another object’s header (a <em>committed</em>
+                    message).
+                </td>
+	      </tr>
+	    </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the object header
+            containing the message to be shared.</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Shared Message (Version 3)
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Type</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Location <em>(variable size)</em></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Shared Message (Version 3)
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number indicates changes in the format of shared 
+	    object message and is described here:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Version</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>3</code></td>
+		<td>Used by the library of version 1.8 and after.  In this
+                    version, the <em>Type</em> field can indicate that
+                    the message is stored in the fractal heap.
+                </td>
+	      </tr>
+	    </table></p>
+        </td>
+	</tr>
+
+	<tr>
+	  <td><p>Type</p></td>
+	  <td><p>The type of shared message location:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Value</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>Message is not shared and is not shareable.
+                </td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>Message stored in file’s <em>shared object header message</em>
+                    heap (a <em>shared</em> message).
+                </td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>2</code></td>
+		<td>Message stored in another object’s header (a <em>committed</em>
+                    message).
+                </td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>3</code></td>
+		<td>Message stored is not shared, but is sharable.
+                </td>
+	      </tr>
+
+	    </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Location</p></td>
+	  <td><p>This field contains either a <a href="#SizeOfOffsetsV0">
+        <em>Size of Offsets</em></a>-bytes address of the object header
+        containing the message to be shared, or an 8-byte fractal heap 
+        ID for the message in the file’s <em>shared object header 
+        message</em> heap.
+	    </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+    
+
+    <p>The following is a list of currently defined header messages:
+    </p>
+
+<h4><a name="NILMessage">IV.A.2.a. The NIL Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> NIL</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0000</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may be repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The NIL message is used to indicate a message which is to be 
+      ignored when reading the header messages for a data object. 
+      [Possibly one which has been deleted for some reason.]
+    </td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> Unspecified</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+
+<h4><a name="DataspaceMessage">IV.A.2.b. The Dataspace Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Dataspace</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0001</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies according to the number of 
+      dimensions, as described in the following table.</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Required for dataset objects; 
+      may not be repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The dataspace message describes the number of dimensions (in 
+      other words, “rank”) and size of each dimension that 
+      the data object has. This message is only used for datasets which 
+      have a simple, rectilinear, array-like layout; datasets requiring 
+      a more complex layout are not yet supported.
+    </td>
+    </tr>
+    
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Dataspace Message - Version 1
+    </caption>
+
+	<tr>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Dimensionality</td>
+	  <td>Flags</td>
+	  <td>Reserved</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Reserved</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
+    </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Permutation Index #1<sup>L</sup> <em>(optional)</em><br /><br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4"><br />Permutation Index #n<sup>L</sup> <em>(optional)</em><br /><br /></td>
+    </tr>
+	  </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Dataspace Message - Version 1
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td>
+            <p>This value is used to determine the format of the
+	    Dataspace Message.  When the format of the
+	    information in the message is changed, the version number
+	    is incremented and can be used to determine how the
+	    information in the object header is formatted.  This
+            document describes version one (1) (there was no version
+            zero (0)).
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimensionality</p></td>
+	  <td>
+            <p>This value is the number of dimensions that the data
+	    object has.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td>
+            <p>This field is used to store flags to indicate the
+	    presence of parts of this message.  Bit 0 (the least
+	    significant bit) is used to indicate that maximum
+	    dimensions are present.  Bit 1 is used to indicate that
+	    permutation indices are present.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Size</p></td>
+	  <td>
+            <p>This value is the current size of the dimension of the
+	    data as stored in the file.  The first dimension stored in
+	    the list of dimensions is the slowest changing dimension
+	    and the last dimension stored is the fastest changing
+	    dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Maximum Size</p></td>
+	  <td>
+            <p>This value is the maximum size of the dimension of the
+	    data as stored in the file.  This value may be the special
+            “<a href="#UnlimitedDim">unlimited</a>” size which indicates
+	    that the data may expand along this dimension indefinitely.
+            If these values are not stored, the maximum size of each
+            dimension is assumed to be the dimension’s current size.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Permutation Index #n</p></td>
+	  <td>
+            <p>This value is the index permutation used to map
+	    each dimension from the canonical representation to an
+	    alternate axis for each dimension.  If these values are
+	    not stored, the first dimension stored in the list of
+	    dimensions is the slowest changing dimension and the last
+	    dimension stored is the fastest changing dimension.
+            </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+
+    
+
+    <br />
+    <p>Version 2 of the dataspace message dropped the optional 
+    permutation index value support, as it was never implemented in the 
+    HDF5 Library:</p>
+
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Dataspace Message - Version 2
+    </caption>
+
+	<tr>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Dimensionality</td>
+	  <td>Flags</td>
+	  <td>Type</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
+      </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+      </tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
+      </tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+      </tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+      </tr>
+	<tr>
+	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
+      </tr>
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Dataspace Message - Version 2
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td>
+            <p>This value is used to determine the format of the
+                Dataspace Message.  This field should be ‘2’ for version 2
+                format messages.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimensionality</p></td>
+	  <td>
+            <p>This value is the number of dimensions that the data object has.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td>
+            <p>This field is used to store flags to indicate the
+                presence of parts of this message.  Bit 0 (the least
+                significant bit) is used to indicate that maximum
+                dimensions are present.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Type</p></td>
+	  <td>
+            <p>This field indicates the type of the dataspace:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>A <em>scalar</em> dataspace; in other words, 
+                  a dataspace with a single, dimensionless element.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>A <em>simple</em> dataspace; in other words, 
+                  a dataspace with a rank greater than 0 and an 
+                  appropriate number of dimensions.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>2</code></td>
+                  <td>A <em>null</em> dataspace; in other words, 
+                  a dataspace with no elements.
+                  </td>
+                </tr>
+            </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Size</p></td>
+	  <td>
+            <p>This value is the current size of the dimension of the
+                data as stored in the file.  The first dimension stored in
+                the list of dimensions is the slowest changing dimension
+                and the last dimension stored is the fastest changing
+                dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Maximum Size</p></td>
+	  <td>
+            <p>This value is the maximum size of the dimension of the
+                data as stored in the file.  This value may be the special
+                “<a href="#UnlimitedDim">unlimited</a>” size which indicates
+                that the data may expand along this dimension indefinitely.
+                If these values are not stored, the maximum size of each
+                dimension is assumed to be the dimension’s current size.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+
+    
+
+<!--
+<h4><a name="DataSpaceMessage">Header Message Name: Complex Dataspace (Fiber Bundle?)</a></h4>
+
+    <!-- start msgdesc table --
+    <center>
+    <table class="msgdesc">
+    <p><b>Header Message Name: ???????</b></td></tr>
+    <b>Header Message Type: </b>0x0002<br />
+    <b>Length:</b> Varies</td></tr>
+
+    <b>Status:</b> One of the <em>Simple Dataspace</em> or
+    <em>Complex Dataspace</em> messages is required (but not both) and may
+    not be repeated.<br /> <b>Description:</b> The
+    <em>Dataspace</em> message describes space that the dataset is
+    mapped onto in a more comprehensive way than the <em>Simple
+    Dimensionality</em> message is capable of handling.  The
+    dataspace of a dataset encompasses the type of coordinate system
+    used to locate the dataset’s elements as well as the structure and
+    regularity of the coordinate system.  The dataspace also
+    describes the number of dimensions which the dataset inhabits as
+    well as a possible higher dimensional space in which the dataset
+    is located within.
+
+    <br />
+    <p><b>Format of Data:</b></p>
+
+    <center>
+      <table border cellpadding="4" width="80%">
+	<caption align="bottom">
+	  <b>HDF5 Dataspace Message Layout</b>
+    </caption>
+
+	<tr align="center">
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+      </tr>
+
+	<tr align="center">
+	  <td colspan="4">Mesh Type</td>
+      </tr>
+	<tr align="center">
+	  <td colspan="4">Logical Dimensionality</td>
+      </tr>
+      </table>
+    </center>
+
+    <br />
+    <dl>
+      <dt>The elements of the dimensionality message are described below: 
+      <dd>
+	<dl>
+	  <dt>Mesh Type: (unsigned 32-bit integer)
+	  <dd>This value indicates whether the grid is
+	    polar/spherical/cartesion, 
+	    structured/unstructured and regular/irregular. <br />
+	    The mesh type value is broken up as follows: <br />
+
+	    <br />
+	    <center>
+	      <table border cellpadding="4" width="80%">
+		<caption align="bottom">
+		  <b>HDF5 Mesh-type Layout</b>
+	    </caption>
+
+		<tr align="center">
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+        </tr>
+
+		<tr align="center">
+		  <td colspan="1">Mesh Embedding</td>
+		  <td colspan="1">Coordinate System</td>
+		  <td colspan="1">Structure</td>
+		  <td colspan="1">Regularity</td>
+        </tr>
+	      </table>
+	    </center>
+	    The following are the definitions of mesh-type bytes:
+	    <dl>
+	      <dt>Mesh Embedding
+	      <dd>This value indicates whether the dataset dataspace
+		is located within 
+		another dataspace or not:
+		<dl> <dl>
+		    <dt><STANDALONE>
+		    <dd>The dataset mesh is self-contained and is not
+		      embedded in another mesh. 
+		    <dt><EMBEDDED>
+		    <dd>The dataset’s dataspace is located within
+		      another dataspace, as 
+		      described in information below.
+		  </dl> </dl>
+	      <dt>Coordinate System
+	      <dd>This value defines the type of coordinate system
+		used for the mesh: 
+		<dl> <dl>
+		    <dt><POLAR>
+		    <dd>The last two dimensions are in polar
+		      coordinates, higher dimensions are 
+		      cartesian.
+		    <dt><SPHERICAL>
+		    <dd>The last three dimensions are in spherical
+		      coordinates, higher dimensions 
+		      are cartesian.
+		    <dt><CARTESIAN>
+		    <dd>All dimensions are in cartesian coordinates.
+		  </dl> </dl>
+	      <dt>Structure
+	      <dd>This value defines the locations of the grid-points
+		on the axes: 
+		<dl> <dl>
+		    <dt><STRUCTURED>
+		    <dd>All grid-points are on integral, sequential
+		      locations, starting from 0. 
+		    <dt><UNSTRUCTURED>
+		    <dd>Grid-points locations in each dimension are
+		      explicitly defined and 
+		      may be of any numeric datatype.
+		  </dl> </dl>
+	      <dt>Regularity
+	      <dd>This value defines the locations of the dataset
+		points on the grid: 
+		<dl> <dl>
+		    <dt><REGULAR>
+		    <dd>All dataset elements are located at the
+		      grid-points defined. 
+		    <dt><IRREGULAR>
+		    <dd>Each dataset element has a particular
+		      grid-location defined. 
+		  </dl> </dl>
+	    </dl>
+	    <p>The following grid combinations are currently allowed:</p>
+	    <dl> <dl>
+		<dt><POLAR-STRUCTURED-REGULAR>
+		<dt><SPHERICAL-STRUCTURED-REGULAR>
+		<dt><CARTESIAN-STRUCTURED-REGULAR>
+		<dt><POLAR-UNSTRUCTURED-REGULAR>
+		<dt><SPHERICAL-UNSTRUCTURED-REGULAR>
+		<dt><CARTESIAN-UNSTRUCTURED-REGULAR>
+		<dt><CARTESIAN-UNSTRUCTURED-IRREGULAR>
+	      </dl> </dl>
+	    All of the above grid types can be embedded within another
+	    dataspace.
+	    <br /> <br />
+	  <dt>Logical Dimensionality: (unsigned 32-bit integer)
+	  <dd>This value is the number of dimensions that the dataset occupies.
+
+	    <br />
+	    <center>
+	      <table border cellpadding="4" width="80%">
+		<caption align="bottom">
+		  <b>HDF5 Dataspace Embedded Dimensionality Information</b>
+	    </caption>
+
+		<tr align="center">
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+		  <th width="25%">byte</th>
+        </tr>
+
+		<tr align="center">
+		  <td colspan="4">Embedded Dimensionality</td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">Embedded Dimension Size #1</td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">.<br />.<br />.<br /></td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">Embedded Dimension Size #n</td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">Embedded Origin Location #1</td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">.<br />.<br />.<br /></td>
+        </tr>
+		<tr align="center">
+		  <td colspan="4">Embedded Origin Location #n</td>
+        </tr>
+	      </table>
+	    </center>
+
+	  <dt>Embedded Dimensionality: (unsigned 32-bit integer)
+	  <dd>This value is the number of dimensions of the space the
+	    dataset is located within: in other words, a planar dataset 
+        located within a 3-D space, a 3-D dataset 
+	    which is a subset of another 3-D space, and so on.
+	  <dt>Embedded Dimension Size: (unsigned 32-bit integer)
+	  <dd>These values are the sizes of the dimensions of the
+	    embedded dataspace 
+	    that the dataset is located within.
+	  <dt>Embedded Origin Location: (unsigned 32-bit integer)
+	  <dd>These values comprise the location of the dataset’s
+	    origin within the embedded dataspace. 
+	</dl>
+    </dl>
+    [Comment: need some way to handle different orientations of the
+    dataset dataspace 
+    within the embedded dataspace]<br />
+
+    <br />
+    <center>
+      <table border cellpadding="4" width="80%">
+	<caption align="bottom">
+	  <b>HDF5 Dataspace Structured/Regular Grid Information</b>
+    </caption>
+
+	<tr align="center">
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+    </tr>
+
+	<tr align="center">
+	  <td colspan="4">Logical Dimension Size #1</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Logical Dimension Maximum #1</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">.<br />.<br />.<br /></td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Logical Dimension Size #n</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Logical Dimension Maximum #n</td>
+    </tr>
+      </table>
+    </center>
+
+    <br />
+    <dl>
+      <dt>The elements of the dimensionality message are described below: 
+      <dd>
+	<dl>
+	  <dt>Logical Dimension Size #n: (unsigned 32-bit integer)
+	  <dd>This value is the current size of the dimension of the
+	    data as stored in 
+	    the file.  The first dimension stored in the list of
+	    dimensions is the slowest 
+	    changing dimension and the last dimension stored is the
+	    fastest changing 
+	    dimension. 
+	  <dt>Logical Dimension Maximum #n: (unsigned 32-bit integer)
+	  <dd>This value is the maximum size of the dimension of the
+	    data as stored in 
+	    the file.  This value may be the special value
+	    <UNLIMITED> which 
+	    indicates that the data may expand along this dimension
+	    indefinitely. 
+	</dl>
+    </dl>
+    <br />
+    <center>
+      <table border cellpadding="4" width="80%">
+	<caption align="bottom">
+	  <b>HDF5 Dataspace Structured/Irregular Grid Information</b>
+    </caption>
+
+	<tr align="center">
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+    </tr>
+
+	<tr align="center">
+	  <td colspan="4"># of Grid Points in Dimension #1</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">.<br />.<br />.<br /></td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4"># of Grid Points in Dimension #n</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Datatype of Grid Point Locations</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Location of Grid Points in Dimension #1</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">.<br />.<br />.<br /></td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Location of Grid Points in Dimension #n</td>
+    </tr>
+      </table>
+    </center>
+
+    <br />
+    <center>
+      <table border cellpadding="4" width="80%">
+	<caption align="bottom">
+	  <b>HDF5 Dataspace Unstructured Grid Information</b>
+    </caption>
+
+	<tr align="center">
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+    </tr>
+
+	<tr align="center">
+	  <td colspan="4"># of Grid Points</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Datatype of Grid Point Locations</td>
+    </tr>
+	<tr align="center">
+	  <td colspan="4">Grid Point Locations<br />.<br />.<br /></td>
+    </tr>
+      </table>
+    </center>
+-->
+
+<h4><a name="LinkInfoMessage">IV.A.2.c. The Link Info Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Link Info</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x002 </td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated. </td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The link info message tracks variable information about the 
+      current state of the links for a “new style” 
+      group’s behavior. Variable information will be stored in 
+      this message and constant information will be stored in the 
+      <a href="#GroupInfoMessage">Group Info</a> message.
+      </td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Link Info
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Flags</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Maximum Creation Index <em>(8 bytes, optional)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Address of v2 B-tree for Name Index<sup>O</sup><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Address of v2 B-tree for Creation Order Index<sup>O</sup> <em>(optional)</em><br /><br /></td>
+	</tr>
+	
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Link Info
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Version</p></td>
+	  <td>
+            <p>The version number for this message. This document describes
+                version 0.</p>
+	  </td>
+	</tr>
+
+	<tr>
+	<td><p>Flags</p></td>
+	  <td><p>This field determines various optional aspects of the link
+                info message:
+	      
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>If set, creation order for the links is tracked.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>If set, creation order for the links is indexed.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>2-7</code></td>
+                  <td>Reserved</td>
+                </tr>
+	    </table></p>
+           
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Maximum Creation Index</p></td>
+	  <td><p>This 64-bit value is the maximum creation order index value
+                stored for a link in this group.</p>
+	    <p>This field is present if bit 0 of <em>flags</em> is set.</p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Fractal Heap Address</p></td>
+	  <td>
+            <p>
+                This is the address of the fractal heap to store dense links.
+                Each link stored in the fractal heap is stored as a
+                <a href="#LinkMessage">Link Message</a>.
+            </p>
+            <p>
+                If there are no links in the group, or the group’s links
+                are stored “compactly” (as object header messages), this
+                value will be the <a href="#UndefinedAddress">undefined
+                address</a>. 
+            </p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Address of v2 B-tree for Name Index</p></td>
+	  <td><p>This is the address of the version 2 B-tree to index names of links.</p>
+                <p>If there are no links in the group, or the group’s links
+                    are stored “compactly” (as object header messages), this
+                    value will be the <a href="#UndefinedAddress">undefined
+                    address</a>. 
+                </p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Address of v2 B-tree for Creation Order Index</p></td>
+	  <td><p>This is the address of the version 2 B-tree to index creation order of links.</p>
+                <p>If there are no links in the group, or the group’s links
+                    are stored “compactly” (as object header messages), this
+                    value will be the <a href="#UndefinedAddress">undefined
+                    address</a>. 
+                </p>
+	    <p>This field exists if bit 1 of <em>flags</em> is set.</p>
+	  </td>
+	</tr>
+
+      </table>
+    </div>
+
+
+<h4><a name="DatatypeMessage">IV.A.2.d. The Datatype Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Datatype</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0003
+    </td></tr>
+    <tr><td colspan="2"><b>Length:</b> Variable</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Required for dataset or committed 
+      datatype (formerly named datatype) objects; may not be repeated.
+      </td></tr>
+    <tr><td><b>Description:</b></td> 
+      <td><p>The datatype message defines the datatype for each element 
+      of a dataset or a common datatype for sharing between multiple 
+      datasets.  A datatype can describe an atomic type like a fixed- 
+      or floating-point type or more complex types like a C struct 
+      (compound datatype), array (array datatype), or C++ vector 
+      (variable-length datatype).</p>
+      <p>Datatype messages that are part of a dataset object do not 
+      describe how elements are related to one another; the dataspace 
+      message is used for that purpose. Datatype messages that are part of 
+      a committed datatype (formerly named datatype) message describe 
+      a common datatype that can be shared by multiple datasets in the 
+      file.</p>
+      </td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Datatype Message
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Class and Version</td>
+	  <td>Class Bit Field, Bits 0-7</td>
+	  <td>Class Bit Field, Bits 8-15</td>
+	  <td>Class Bit Field, Bits 16-23</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Size</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br /><br />Properties<br /><br /><br /></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Datatype Message
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Class and Version</p></td>
+	  <td>
+            <p>The version of the datatype message and the datatype’s class
+                information are packed together in this field.  The version
+                number is packed in the top 4 bits of the field and the class
+                is contained in the bottom 4 bits.
+            </p>
+            <p>The version number information is used for changes in the
+                format of the datatype message and is described here:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Version</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Never used
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Used by early versions of the library to encode
+                            compound datatypes with explicit array fields.
+                            See the compound datatype description below for
+                            further details.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>Used when an array datatype needs to be encoded.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>Used when a VAX byte-ordered type needs to be
+                        encoded.  Packs various other datatype classes more
+                        efficiently also.
+                      </td>
+                    </tr>
+                </table></p>
+            
+            <p>The class of the datatype determines the format for the class
+                bit field and properties portion of the datatype message, which
+                are described below.  The
+                following classes are currently defined:
+                
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Value</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Fixed-Point</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Floating-point</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>Time</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>String</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>4</code></td>
+                      <td>Bit field</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>5</code></td>
+                      <td>Opaque</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>6</code></td>
+                      <td>Compound</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>7</code></td>
+                      <td>Reference</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>8</code></td>
+                      <td>Enumerated</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>9</code></td>
+                      <td>Variable-Length</td>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>10</code></td>
+                      <td>Array</td>
+                    </tr>
+                </table></p>
+            
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Class Bit Fields</p></td>
+	  <td>
+            <p>The information in these bit fields is specific to each datatype
+                class and is described below.  All bits not defined for a
+                datatype class are set to zero.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Size</p></td>
+	  <td>
+            <p>The size of a datatype element in bytes.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Properties</p></td>
+	  <td>
+            <p>This variable-sized sequence of bytes encodes information
+                specific to each datatype class and is described for each class
+                below.  If there is no property information specified for a
+                datatype class, the size of this field is zero bytes.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Fixed-point Numbers class 
+    (Class 0):</p>
+
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Fixed-point Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0</p></td>
+	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
+	    otherwise, byte order is big endian.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>1, 2</p></td>
+	  <td><p><b>Padding type.</b>  Bit 1 is the lo_pad bit and bit 2
+	    is the hi_pad bit.  If a datum has unused bits at either
+	    end, then the lo_pad or hi_pad bit is copied to those
+	    locations.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>3</p></td>
+	  <td><p><b>Signed.</b> If this bit is set then the fixed-point
+	    number is in 2’s complement form.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>4-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Fixed-point Property Description
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Bit Offset</td>
+	  <td colspan="2">Bit Precision</td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Fixed-point Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Offset</p></td>
+	  <td>
+            <p>The bit offset of the first significant bit of the fixed-point
+                value within the datatype.  The bit offset specifies the number
+                of bits “to the right of” the value (which are set to the
+                lo_pad bit value).
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Precision</p></td>
+	  <td>
+            <p>The number of bits of precision of the fixed-point value
+                within the datatype.  This value, combined with the datatype
+                element’s size and the Bit Offset field specifies the number
+                of bits “to the left of” the value (which are set to the
+                hi_pad bit value).
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Floating-point Numbers class 
+    (Class 1):</p>
+
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Floating-point Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0, 6</p></td>
+	  <td><p><b>Byte Order.</b> These two non-contiguous bits specify the 
+            “endianness” of the bytes in the datatype element.
+            <table class="list">
+                <tr>
+                  <th width="10%" align="center">Bit 6</th>
+                  <th width="10%" align="center">Bit 0</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td align="center"><code>0</code></td>
+                  <td>Byte order is little-endian
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td align="center"><code>1</code></td>
+                  <td>Byte order is big-endian
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td align="center"><code>0</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td align="center"><code>1</code></td>
+                  <td>Byte order is VAX-endian
+                  </td>
+                </tr>
+            </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>1, 2, 3</p></td>
+	  <td><p><b>Padding type.</b>  Bit 1 is the low bits pad type, bit 2
+	    is the high bits pad type, and bit 3 is the internal bits
+	    pad type.  If a datum has unused bits at either end or between
+	    the sign bit, exponent, or mantissa, then the value of bit
+	    1, 2, or 3 is copied to those locations.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>4-5</p></td>
+	  <td><p><b>Mantissa Normalization.</b> This 2-bit bit field specifies
+            how the most significant bit of the mantissa is managed.
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Value</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>No normalization
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>The most significant bit of the mantissa is always set
+                        (except for 0.0).
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>The most significant bit of the mantissa is not stored,
+                        but is implied to be set.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table></p>
+            </td>
+	</tr>
+
+	<tr>
+	  <td><p>7</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>8-15</p></td>
+	  <td><p><b>Sign Location.</b> This is the bit position of the sign
+	    bit.  Bits are numbered with the least significant bit zero.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>16-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Floating-point Property Description
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Bit Offset</td>
+	  <td colspan="2">Bit Precision</td>
+	</tr>
+
+	<tr>
+	  <td>Exponent Location</td>
+	  <td>Exponent Size</td>
+	  <td>Mantissa Location</td>
+	  <td>Mantissa Size</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Exponent Bias</td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Floating-point Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Offset</p></td>
+	  <td>
+            <p>The bit offset of the first significant bit of the floating-point
+                value within the datatype.  The bit offset specifies the number
+                of bits “to the right of” the value.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Precision</p></td>
+	  <td>
+            <p>The number of bits of precision of the floating-point value
+                within the datatype.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Exponent Location</p></td>
+	  <td>
+            <p>The bit position of the exponent field.  Bits are numbered with
+                the least significant bit number zero.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Exponent Size</p></td>
+	  <td>
+            <p>The size of the exponent field in bits.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Mantissa Location</p></td>
+	  <td>
+            <p>The bit position of the mantissa field.  Bits are numbered with
+                the least significant bit number zero.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Mantissa Size</p></td>
+	  <td>
+            <p>The size of the mantissa field in bits.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Exponent Bias</p></td>
+	  <td>
+            <p>The bias of the exponent field.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Time class (Class 2):</p>
+
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Time Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0</p></td>
+	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
+	    otherwise, byte order is big endian.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>1-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Time Property Description
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Bit Precision</td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Time Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Precision</p></td>
+	  <td>
+            <p>The number of bits of precision of the time value.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Strings class (Class 3):</p>
+
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: String Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0-3</p></td>
+	  <td><p><b>Padding type.</b>  This four-bit value determines the
+	    type of padding to use for the string.  The values are:
+
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>Null Terminate: A zero byte marks the end of the
+                    string and is guaranteed to be present after
+                    converting a long string to a short string.  When
+                    converting a short string to a long string the value is
+                    padded with additional null characters as necessary.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>Null Pad: Null characters are added to the end of
+                    the value during conversions from short values to long
+                    values but conversion in the opposite direction simply
+                    truncates the value.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2</code></td>
+                  <td>Space Pad: Space characters are added to the end of
+                    the value during conversions from short values to long
+                    values but conversion in the opposite direction simply
+                    truncates the value.  This is the Fortran
+                    representation of the string.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>3-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+            </td>
+	</tr>
+
+	<tr>
+	  <td><p>4-7</p></td>
+	  <td><p><b>Character Set.</b>  The character set used to
+	    encode the string.
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>ASCII character set encoding
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>UTF-8 character set encoding
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>8-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <p>There are no properties defined for the string class.
+    </p>
+    
+
+    <p>Class specific information for the Bit Fields class (Class 4):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Bitfield Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0</p></td>
+	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
+	    otherwise, byte order is big endian.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>1, 2</p></td>
+	  <td><p><b>Padding type.</b>  Bit 1 is the lo_pad type and bit 2
+	    is the hi_pad type.  If a datum has unused bits at either
+	    end, then the lo_pad or hi_pad bit is copied to those
+	    locations.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>3-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Bit Field Property Description
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="2">Bit Offset</td>
+	  <td colspan="2">Bit Precision</td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Bit Field Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Offset</p></td>
+	  <td>
+            <p>The bit offset of the first significant bit of the bit field
+                within the datatype.  The bit offset specifies the number
+                of bits “to the right of” the value.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Bit Precision</p></td>
+	  <td>
+            <p>The number of bits of precision of the bit field
+                within the datatype.
+            </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Opaque class (Class 5):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Opaque Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0-7</p></td>
+	  <td><p>Length of ASCII tag in bytes.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>8-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Opaque Property Description
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />ASCII Tag<br />
+	    <br /></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Opaque Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>ASCII Tag</p></td>
+	  <td>
+            <p>This NUL-terminated string provides a description for the
+                opaque type.  It is NUL-padded to a multiple of 8 bytes.
+            </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+    
+
+    <br />
+    <p>Class specific information for the Compound class (Class 6):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Compound Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0-15</p></td>
+	  <td><p><b>Number of Members.</b> This field contains the number
+	    of members defined for the compound datatype.  The member
+	    definitions are listed in the Properties field of the data
+	    type message.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>16-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+    
+
+    <p>The Properties field of a compound datatype is a list of the
+      member definitions of the compound datatype.  The member
+      definitions appear one after another with no intervening bytes.
+      The member types are described with a (recursively) encoded datatype
+      message.</p>
+
+    <p>Note that the property descriptions are different for different
+      versions of the datatype version.  Additionally note that the version
+      0 datatype encoding is deprecated and has been replaced with later
+      encodings in versions of the HDF5 Library from the 1.4 release 
+      onward.</p>
+
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Compound Properties Description for Datatype Version 1
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Name<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Byte Offset of Member</td>
+	</tr>
+
+	<tr>
+	  <td>Dimensionality</td>
+	  <td colspan="3">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension Permutation</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #1 Size (required)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #2 Size (required)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #3 Size (required)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #4 Size (required)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Compound Properties Description for Datatype Version 1
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Name</p></td>
+	  <td>
+            <p>This NUL-terminated string provides a description for the
+                opaque type.  It is NUL-padded to a multiple of 8 bytes.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Byte Offset of Member</p></td>
+	  <td>
+            <p>This is the byte offset of the member within the datatype.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimensionality</p></td>
+	  <td>
+            <p>If set to zero, this field indicates a scalar member.  If set
+                to a value greater than zero, this field indicates that the
+                member is an array of values.  For array members, the size of
+                the array is indicated by the ‘Size of Dimension n’ field in
+                this message.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension Permutation</p></td>
+	  <td>
+            <p>This field was intended to allow an array field to have 
+                its dimensions permuted, but this was never implemented.
+                This field should always be set to zero.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Size</p></td>
+	  <td>
+            <p>This field is the size of a dimension of the array field as
+            stored in the file.  The first dimension stored in the list of
+            dimensions is the slowest changing dimension and the last
+            dimension stored is the fastest changing dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Member Type Message</p></td>
+	  <td>
+            <p>This field is a datatype message describing the datatype of
+            the member.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Compound Properties Description for Datatype Version 2
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Name<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Byte Offset of Member</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Compound Properties Description for Datatype Version 2
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Name</p></td>
+	  <td>
+            <p>This NUL-terminated string provides a description for the
+                opaque type.  It is NUL-padded to a multiple of 8 bytes.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Byte Offset of Member</p></td>
+	  <td>
+            <p>This is the byte offset of the member within the datatype.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Member Type Message</p></td>
+	  <td>
+            <p>This field is a datatype message describing the datatype of
+            the member.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Compound Properties Description for Datatype Version 3
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Name<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Byte Offset of Member <em>(variable size)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Compound Properties Description for Datatype Version 3
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Name</p></td>
+	  <td><p>This NUL-terminated string provides a description for the 
+      opaque type. It is <em>not</em> NUL-padded to a multiple of 8 
+      bytes.</p></td>
+	</tr>
+
+	<tr>
+        <td><p>Byte Offset of Member</p></td>
+        <td><p>This is the byte offset of the member within the datatype. 
+        The field size is the minimum number of bytes necessary, 
+        based on the size of the datatype element. For example, a 
+        datatype element size of less than 256 bytes uses a 1 byte 
+        length, a datatype element size of 256-65535 bytes uses a 
+        2 byte length, and so on.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>Member Type Message</p></td>
+	  <td><p>This field is a datatype message describing the datatype of
+        the member.</p></td>
+	</tr>
+
+      </table>
+    </div>
+    
 
     <br />
-    <dl>
-      <dt>The elements of the dimensionality message are described below: 
-      <dd>
-	<dl>
-	  <dt>Mesh Type: (unsigned 32-bit integer)
-	  <dd>This value indicates whether the grid is
-	    polar/spherical/cartesion, 
-	    structured/unstructured and regular/irregular. <br />
-	    The mesh type value is broken up as follows: <br />
+    <p>Class specific information for the Reference class (Class 7):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Reference Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0-3</p></td>
+	  <td><p><b>Type.</b> This four-bit value contains the type of reference
+            described.  The values defined are:
+
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>Object Reference: A reference to another object in this
+                    HDF5 file.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>Dataset Region Reference: A reference to a region within
+                    a dataset in this HDF5 file.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+
+            </td>
+	</tr>
+
+	<tr>
+	  <td><p>4-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <p>There are no properties defined for the reference class.
+    </p>
+    
+
+    <br />
+    <p>Class specific information for the Enumeration class (Class 8):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Enumeration Bit Field Description
+    </caption>
+
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
+
+	<tr>
+	  <td><p>0-15</p></td>
+	  <td><p><b>Number of Members.</b> The number of name/value
+	    pairs defined for the enumeration type.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>16-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Enumeration Property Description for Datatype Versions 
+        1 and 2
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Base Type<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Names<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Values<br /><br /></td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Enumeration Property Description for Datatype Versions 
+        1 and 2
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Base Type</p></td>
+	  <td>
+            <p>Each enumeration type is based on some parent type, usually an
+                integer. The information for that parent type is described
+                recursively by this field.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Names</p></td>
+	  <td>
+            <p>The name for each name/value pair. Each name is stored as a null
+                terminated ASCII string in a multiple of eight bytes. The names
+                are in no particular order.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Values</p></td>
+	  <td>
+            <p>The list of values in the same order as the names.  The values
+                are packed (no inter-value padding) and the size of each value
+                is determined by the parent type.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Enumeration Property Description for Datatype Version 3
+    </caption>
+
+	<tr>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	  <th width="25%">Byte</th>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Base Type<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Names<br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Values<br /><br /></td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Enumeration Property Description for Datatype Version 3
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Base Type</p></td>
+	  <td>
+            <p>Each enumeration type is based on some parent type, usually an
+                integer. The information for that parent type is described
+                recursively by this field.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Names</p></td>
+	  <td>
+            <p>The name for each name/value pair. Each name is stored as a null
+                terminated ASCII string, <em>not</em> padded to a multiple of
+                eight bytes. The names are in no particular order.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Values</p></td>
+	  <td>
+            <p>The list of values in the same order as the names.  The values
+                are packed (no inter-value padding) and the size of each value
+                is determined by the parent type.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
+
+
+    <br />
+    <p>Class specific information for the Variable-length class (Class 9):</p>
+    
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Bits: Variable-length Bit Field Description
+    </caption>
 
-	    <br />
-	    <center>
-	      <table border cellpadding="4" width="80%">
-		<caption align="bottom">
-		  <b>HDF5 Mesh-type Layout</b>
-		</caption>
+	<tr>
+	  <th width="10%">Bits</th>
+	  <th>Meaning</th>
+	</tr>
 
-		<tr align="center">
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
+	<tr>
+	  <td><p>0-3</p></td>
+	  <td><p><b>Type.</b> This four-bit value contains the type of
+            variable-length datatype described.  The values defined are:
+
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>Sequence: A variable-length sequence of any datatype.
+                    Variable-length sequences do not have padding or
+                    character set information.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>String: A variable-length sequence of characters.
+                    Variable-length strings have padding and character set
+                    information.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+
+            </td>
+	</tr>
+
+	<tr>
+	  <td><p>4-7</p></td>
+	  <td><p><b>Padding type.</b> (variable-length string only)
+                  This four-bit value determines the type of padding 
+                  used for variable-length strings.  The values are the same 
+                  as for the string padding type, as follows:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>Null terminate: A zero byte marks the end of a string
+                    and is guaranteed to be present after converting a long
+                    string to a short string.  When converting a short string
+                    to a long string, the value is padded with additional null
+                    characters as necessary.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>Null pad: Null characters are added to the end of the
+                    value during conversion from a short string to a longer
+                    string.  Conversion from a long string to a shorter string
+                    simply truncates the value.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2</code></td>
+                  <td>Space pad: Space characters are added to the end of the
+                    value during conversion from a short string to a longer
+                    string.  Conversion from a long string to a shorter string
+                    simply truncates the value.  This is the Fortran
+                    representation of the string.
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>3-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+
+            <p>This value is set to zero for variable-length sequences.</p>
+
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>8-11</p></td>
+	  <td><p><b>Character Set.</b> (variable-length string only)
+                  This four-bit value specifies the character set 
+                  to be used for encoding the string:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>ASCII character set encoding
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>UTF-8 character set encoding
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>2-15</code></td>
+                  <td>Reserved
+                  </td>
+                </tr>
+            </table></p>
+
+            <p>This value is set to zero for variable-length sequences.</p>
+
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>12-23</p></td>
+	  <td><p>Reserved (zero).</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Variable-length Property Description
+        </caption>
+
+        <tr>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
         </tr>
 
-		<tr align="center">
-		  <td colspan="1">Mesh Embedding</td>
-		  <td colspan="1">Coordinate System</td>
-		  <td colspan="1">Structure</td>
-		  <td colspan="1">Regularity</td>
+        <tr>
+          <td colspan="4"><br />Base Type<br /><br /></td>
         </tr>
-	      </table>
-	    </center>
-	    The following are the definitions of mesh-type bytes:
-	    <dl>
-	      <dt>Mesh Embedding
-	      <dd>This value indicates whether the dataset dataspace
-		is located within 
-		another dataspace or not:
-		<dl> <dl>
-		    <dt><STANDALONE>
-		    <dd>The dataset mesh is self-contained and is not
-		      embedded in another mesh. 
-		    <dt><EMBEDDED>
-		    <dd>The dataset’s dataspace is located within
-		      another dataspace, as 
-		      described in information below.
-		  </dl> </dl>
-	      <dt>Coordinate System
-	      <dd>This value defines the type of coordinate system
-		used for the mesh: 
-		<dl> <dl>
-		    <dt><POLAR>
-		    <dd>The last two dimensions are in polar
-		      coordinates, higher dimensions are 
-		      cartesian.
-		    <dt><SPHERICAL>
-		    <dd>The last three dimensions are in spherical
-		      coordinates, higher dimensions 
-		      are cartesian.
-		    <dt><CARTESIAN>
-		    <dd>All dimensions are in cartesian coordinates.
-		  </dl> </dl>
-	      <dt>Structure
-	      <dd>This value defines the locations of the grid-points
-		on the axes: 
-		<dl> <dl>
-		    <dt><STRUCTURED>
-		    <dd>All grid-points are on integral, sequential
-		      locations, starting from 0. 
-		    <dt><UNSTRUCTURED>
-		    <dd>Grid-points locations in each dimension are
-		      explicitly defined and 
-		      may be of any numeric datatype.
-		  </dl> </dl>
-	      <dt>Regularity
-	      <dd>This value defines the locations of the dataset
-		points on the grid: 
-		<dl> <dl>
-		    <dt><REGULAR>
-		    <dd>All dataset elements are located at the
-		      grid-points defined. 
-		    <dt><IRREGULAR>
-		    <dd>Each dataset element has a particular
-		      grid-location defined. 
-		  </dl> </dl>
-	    </dl>
-	    <p>The following grid combinations are currently allowed:</p>
-	    <dl> <dl>
-		<dt><POLAR-STRUCTURED-REGULAR>
-		<dt><SPHERICAL-STRUCTURED-REGULAR>
-		<dt><CARTESIAN-STRUCTURED-REGULAR>
-		<dt><POLAR-UNSTRUCTURED-REGULAR>
-		<dt><SPHERICAL-UNSTRUCTURED-REGULAR>
-		<dt><CARTESIAN-UNSTRUCTURED-REGULAR>
-		<dt><CARTESIAN-UNSTRUCTURED-IRREGULAR>
-	      </dl> </dl>
-	    All of the above grid types can be embedded within another
-	    dataspace.
-	    <br /> <br />
-	  <dt>Logical Dimensionality: (unsigned 32-bit integer)
-	  <dd>This value is the number of dimensions that the dataset occupies.
 
-	    <br />
-	    <center>
-	      <table border cellpadding="4" width="80%">
-		<caption align="bottom">
-		  <b>HDF5 Dataspace Embedded Dimensionality Information</b>
-		</caption>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Variable-length Property Description
+        </caption>
+	<tr>
+          <th width="10%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Base Type</p></td>
+	  <td>
+            <p>Each variable-length type is based on some parent type.  The
+                information for that parent type is described recursively by
+                this field.
+            </p>
+          </td>
+	</tr>
+
+      </table>
+    </div>
+    
 
-		<tr align="center">
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
-		  <th width="25%">byte</th>
-        </tr>
+    <br />
+    <p>Class specific information for the Array class (Class 10):</p>
 
-		<tr align="center">
-		  <td colspan="4">Embedded Dimensionality</td>
-        </tr>
-		<tr align="center">
-		  <td colspan="4">Embedded Dimension Size #1</td>
-        </tr>
-		<tr align="center">
-		  <td colspan="4">.<br />.<br />.<br /></td>
-        </tr>
-		<tr align="center">
-		  <td colspan="4">Embedded Dimension Size #n</td>
-        </tr>
-		<tr align="center">
-		  <td colspan="4">Embedded Origin Location #1</td>
-        </tr>
-		<tr align="center">
-		  <td colspan="4">.<br />.<br />.<br /></td>
+    <p>There are no bit fields defined for the array class.
+    </p>
+
+    <p>Note that the dimension information defined in the property for this
+      datatype class is independent of dataspace information for a dataset.
+      The dimension information here describes the dimensionality of the
+      information within a data element (or a component of an element, if the
+      array datatype is nested within another datatype) and the dataspace for a
+      dataset describes the size and locations of the elements in a dataset.
+    </p>
+
+    
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Array Property Description for Datatype Version 2
+        </caption>
+
+        <tr>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
         </tr>
-		<tr align="center">
-		  <td colspan="4">Embedded Origin Location #n</td>
+
+	<tr>
+	  <td>Dimensionality</td>
+	  <td colspan="3">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #1 Size</td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Dimension #n Size</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Permutation Index #1</td>
+	</tr>
+	<tr>
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Permutation Index #n</td>
+	</tr>
+
+        <tr>
+          <td colspan="4"><br />Base Type<br /><br /></td>
         </tr>
-	      </table>
-	    </center>
 
-	  <dt>Embedded Dimensionality: (unsigned 32-bit integer)
-	  <dd>This value is the number of dimensions of the space the
-	    dataset is located within: in other words, a planar dataset 
-        located within a 3-D space, a 3-D dataset 
-	    which is a subset of another 3-D space, and so on.
-	  <dt>Embedded Dimension Size: (unsigned 32-bit integer)
-	  <dd>These values are the sizes of the dimensions of the
-	    embedded dataspace 
-	    that the dataset is located within.
-	  <dt>Embedded Origin Location: (unsigned 32-bit integer)
-	  <dd>These values comprise the location of the dataset’s
-	    origin within the embedded dataspace. 
-	</dl>
-    </dl>
-    [Comment: need some way to handle different orientations of the
-    dataset dataspace 
-    within the embedded dataspace]<br />
+      </table>
+    </div>
 
     <br />
-    <center>
-      <table border cellpadding="4" width="80%">
-	<caption align="bottom">
-	  <b>HDF5 Dataspace Structured/Regular Grid Information</b>
-	</caption>
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Array Property Description for Datatype Version 2
+        </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
-	<tr align="center">
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-    </tr>
+	<tr>
+	  <td><p>Dimensionality</p></td>
+	  <td>
+            <p>This value is the number of dimensions that the array has.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Size</p></td>
+	  <td>
+            <p>This value is the size of the dimension of the array
+	    as stored in the file.  The first dimension stored in
+	    the list of dimensions is the slowest changing dimension
+	    and the last dimension stored is the fastest changing
+	    dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Permutation Index #n</p></td>
+	  <td>
+            <p>This value is the index permutation used to map 
+            each dimension from the canonical representation to an 
+            alternate axis for each dimension. Currently, dimension 
+            permutations are not supported, and these indices should 
+            be set to the index position minus one. In other words, 
+            the first dimension should be set to 0, the second dimension 
+            should be set to 1, and so on.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Base Type</p></td>
+	  <td>
+            <p>Each array type is based on some parent type.  The
+                information for that parent type is described recursively by
+                this field.
+            </p>
+          </td>
+	</tr>
 
-	<tr align="center">
-	  <td colspan="4">Logical Dimension Size #1</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Logical Dimension Maximum #1</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">.<br />.<br />.<br /></td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Logical Dimension Size #n</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Logical Dimension Maximum #n</td>
-    </tr>
       </table>
-    </center>
+    </div>
 
     <br />
-    <dl>
-      <dt>The elements of the dimensionality message are described below: 
-      <dd>
-	<dl>
-	  <dt>Logical Dimension Size #n: (unsigned 32-bit integer)
-	  <dd>This value is the current size of the dimension of the
-	    data as stored in 
-	    the file.  The first dimension stored in the list of
-	    dimensions is the slowest 
-	    changing dimension and the last dimension stored is the
-	    fastest changing 
-	    dimension. 
-	  <dt>Logical Dimension Maximum #n: (unsigned 32-bit integer)
-	  <dd>This value is the maximum size of the dimension of the
-	    data as stored in 
-	    the file.  This value may be the special value
-	    <UNLIMITED> which 
-	    indicates that the data may expand along this dimension
-	    indefinitely. 
-	</dl>
-    </dl>
     <br />
-    <center>
-      <table border cellpadding="4" width="80%">
-	<caption align="bottom">
-	  <b>HDF5 Dataspace Structured/Irregular Grid Information</b>
-	</caption>
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Array Property Description for Datatype Version 3
+        </caption>
 
-	<tr align="center">
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-    </tr>
+        <tr>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+          <th width="25%">Byte</th>
+        </tr>
 
-	<tr align="center">
-	  <td colspan="4"># of Grid Points in Dimension #1</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">.<br />.<br />.<br /></td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4"># of Grid Points in Dimension #n</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Datatype of Grid Point Locations</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Location of Grid Points in Dimension #1</td>
-    </tr>
-	<tr align="center">
+	<tr>
+	  <td>Dimensionality</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension #1 Size</td>
+	</tr>
+	<tr>
 	  <td colspan="4">.<br />.<br />.<br /></td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Location of Grid Points in Dimension #n</td>
-    </tr>
+	</tr>
+	<tr>
+	  <td colspan="4">Dimension #n Size</td>
+	</tr>
+
+        <tr>
+          <td colspan="4"><br />Base Type<br /><br /></td>
+        </tr>
+
       </table>
-    </center>
+    </div>
 
     <br />
-    <center>
-      <table border cellpadding="4" width="80%">
-	<caption align="bottom">
-	  <b>HDF5 Dataspace Unstructured Grid Information</b>
-	</caption>
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Array Property Description for Datatype Version 3
+        </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
-	<tr align="center">
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-    </tr>
+	<tr>
+	  <td><p>Dimensionality</p></td>
+	  <td>
+            <p>This value is the number of dimensions that the array has.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dimension #n Size</p></td>
+	  <td>
+            <p>This value is the size of the dimension of the array
+	    as stored in the file.  The first dimension stored in
+	    the list of dimensions is the slowest changing dimension
+	    and the last dimension stored is the fastest changing
+	    dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Base Type</p></td>
+	  <td>
+            <p>Each array type is based on some parent type.  The
+                information for that parent type is described recursively by
+                this field.
+            </p>
+          </td>
+	</tr>
 
-	<tr align="center">
-	  <td colspan="4"># of Grid Points</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Datatype of Grid Point Locations</td>
-    </tr>
-	<tr align="center">
-	  <td colspan="4">Grid Point Locations<br />.<br />.<br /></td>
-    </tr>
       </table>
-    </center>
--->
+    </div>
 
-<br />
-<h4><a name="LinkInfoMessage">IV.A.2.c. The Link Info Message</a></h4>
+    
+
+<h4><a name="OldFillValueMessage">IV.A.2.e. The Data Storage - 
+Fill Value (Old) Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Link Info</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x002 </td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Fill Value 
+      (old)</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0004</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
     <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated. </td></tr>
+      repeated.</td></tr>
     <tr><td><b>Description:</b></td>
-      <td>The link info message tracks variable information about the 
-      current state of the links for a “new style” 
-      group’s behavior. Variable information will be stored in 
-      this message and constant information will be stored in the 
-      <a href="#GroupInfoMessage">Group Info</a> message.
+      <td><p>The fill value message stores a single data value which 
+      is returned to the application when an uninitialized data element 
+      is read from a dataset. The fill value is interpreted with the 
+      same datatype as the dataset. If no fill value message is present 
+      then a fill value of all zero bytes is assumed.</p>
+      <p>This fill value message is deprecated in favor of the 
+      “new” fill value message (Message Type 0x0005) and 
+      is only written to the file for forward compatibility with 
+      versions of the HDF5 Library before the 1.6.0 version. 
+      Additionally, it only appears for datasets with a user-defined 
+      fill value (as opposed to the library default fill value or an 
+      explicitly set “undefined” fill value).</p>
       </td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
@@ -8654,9 +12045,9 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Link Info
-	</caption>
+    <caption>
+        Layout: Fill Value Message (Old)
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -8666,164 +12057,63 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Flags</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Maximum Creation Index <em>(8 bytes, optional)</em><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Address of v2 B-tree for Name Index<sup>O</sup><br /><br /></td>
+	  <td colspan="4">Size</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Address of v2 B-tree for Creation Order Index<sup>O</sup> <em>(optional)</em><br /><br /></td>
+	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
 	</tr>
-	
-      </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Fill Value Message (Old)
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Version</p></td>
+	  <td><p>Size</p></td>
 	  <td>
-            <p>The version number for this message. This document describes
-                version 0.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	<td><p>Flags</p></td>
-	  <td><p>This field determines various optional aspects of the link
-                info message:
-	      
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>If set, creation order for the links is tracked.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>If set, creation order for the links is indexed.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2-7</code></td>
-                  <td>Reserved</td>
-                </tr>
-	    </table></p>
-           
+            <p>This is the size of the Fill Value field in bytes.
+            </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Maximum Creation Index</p></td>
-	  <td><p>This 64-bit value is the maximum creation order index value
-                stored for a link in this group.</p>
-	    <p>This field is present if bit 0 of <em>flags</em> is set.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Fractal Heap Address</p></td>
+	  <td><p>Fill Value</p></td>
 	  <td>
-            <p>
-                This is the address of the fractal heap to store dense links.
-                Each link stored in the fractal heap is stored as a
-                <a href="#LinkMessage">Link Message</a>.
-            </p>
-            <p>
-                If there are no links in the group, or the group’s links
-                are stored “compactly” (as object header messages), this
-                value will be the <a href="#UndefinedAddress">undefined
-                address</a>. 
+            <p>The fill value.  The bytes of the fill value are interpreted
+                using the same datatype as for the dataset.
             </p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Address of v2 B-tree for Name Index</p></td>
-	  <td><p>This is the address of the version 2 B-tree to index names of links.</p>
-                <p>If there are no links in the group, or the group’s links
-                    are stored “compactly” (as object header messages), this
-                    value will be the <a href="#UndefinedAddress">undefined
-                    address</a>. 
-                </p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Address of v2 B-tree for Creation Order Index</p></td>
-	  <td><p>This is the address of the version 2 B-tree to index creation order of links.</p>
-                <p>If there are no links in the group, or the group’s links
-                    are stored “compactly” (as object header messages), this
-                    value will be the <a href="#UndefinedAddress">undefined
-                    address</a>. 
-                </p>
-	    <p>This field exists if bit 1 of <em>flags</em> is set.</p>
-	  </td>
+          </td>
 	</tr>
-
       </table>
     </div>
+    
 
-
-<br />
-<h4><a name="DatatypeMessage">IV.A.2.d. The Datatype Message</a></h4>
+<h4><a name="FillValueMessage">IV.A.2.f. The Data Storage - 
+Fill Value Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Datatype</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0003
-    </td></tr>
-    <tr><td colspan="2"><b>Length:</b> Variable</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Required for dataset or committed 
-      datatype (formerly named datatype) objects; may not be repeated.
-      </td></tr>
-    <tr><td><b>Description:</b></td> 
-      <td><p>The datatype message defines the datatype for each element 
-      of a dataset or a common datatype for sharing between multiple 
-      datasets.  A datatype can describe an atomic type like a fixed- 
-      or floating-point type or more complex types like a C struct 
-      (compound datatype), array (array datatype) or C++ vector 
-      (variable-length datatype).</p>
-      <p>Datatype messages that are part of a dataset object do not 
-      describe how elements are related to one another; the dataspace 
-      message is used for that purpose. Datatype messages that are part of 
-      a committed datatype (formerly named datatype) message describe 
-      a common datatype that can be shared by multiple datasets in the 
-      file.</p>
-      </td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Fill 
+      Value</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0005</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Required for dataset objects; 
+      may not be repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The fill value message stores a single data value which is 
+      returned to the application when an uninitialized data element 
+      is read from a dataset. The fill value is interpreted with the 
+      same datatype as the dataset.</td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -8831,9 +12121,9 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Datatype Message
-	</caption>
+    <caption>
+        Layout: Fill Value Message - Versions 1 and 2
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -8843,18 +12133,18 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 	</tr>
 
 	<tr>
-	  <td>Class and Version</td>
-	  <td>Class Bit Field, Bits 0-7</td>
-	  <td>Class Bit Field, Bits 8-15</td>
-	  <td>Class Bit Field, Bits 16-23</td>
+	  <td>Version</td>
+	  <td>Space Allocation Time</td>
+	  <td>Fill Value Write Time</td>
+	  <td>Fill Value Defined</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Size</td>
+	  <td colspan="4">Size <em>(optional)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br /><br />Properties<br /><br /><br /></td>
+	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
 	</tr>
       </table>
     </div>
@@ -8862,21 +12152,19 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Fill Value Message - Versions 1 and 2
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Class and Version</p></td>
+	  <td><p>Version</p></td>
 	  <td>
-            <p>The version of the datatype message and the datatype’s class
-                information are packed together in this field.  The version
-                number is packed in the top 4 bits of the field and the class
-                is contained in the bottom 4 bits.
-            </p>
             <p>The version number information is used for changes in the
-                format of the datatype message and is described here:
+                format of the fill value message and is described here:
                 <table class="list">
                     <tr>
                       <th width="20%" align="center">Version</th>
@@ -8890,31 +12178,32 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
                     </tr>
                     <tr>
                       <td align="center"><code>1</code></td>
-                      <td>Used by early versions of the library to encode
-                            compound datatypes with explicit array fields.
-                            See the compound datatype description below for
-                            further details.
+                      <td>Initial version of this message.
                       </td>
                     </tr>
                     <tr>
                       <td align="center"><code>2</code></td>
-                      <td>Used when an array datatype needs to be encoded.
+                      <td>In this version, the Size and Fill Value fields are
+                        only present if the Fill Value Defined field is set
+                        to 1.
                       </td>
                     </tr>
                     <tr>
                       <td align="center"><code>3</code></td>
-                      <td>Used when a VAX byte-ordered type needs to be
-                        encoded.  Packs various other datatype classes more
-                        efficiently also.
+                      <td>This version packs the other fields in the message
+                        more efficiently than version 2.
                       </td>
                     </tr>
                 </table></p>
             
-            <p>The class of the datatype determines the format for the class
-                bit field and properties portion of the datatype message, which
-                are described below.  The
-                following classes are currently defined:
-                
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Space Allocation Time</p></td>
+	  <td>
+            <p>When the storage space for the dataset’s raw data will be
+                allocated.  The allowed values are:
                 <table class="list">
                     <tr>
                       <th width="20%" align="center">Value</th>
@@ -8923,57 +12212,235 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 
                     <tr>
                       <td align="center"><code>0</code></td>
-                      <td>Fixed-Point</td>
+                      <td>Not used.
+                      </td>
                     </tr>
-
                     <tr>
                       <td align="center"><code>1</code></td>
-                      <td>Floating-Point</td>
+                      <td>Early allocation.  Storage space for the entire dataset
+                        should be allocated in the file when the dataset is
+                        created.
+                      </td>
                     </tr>
-
                     <tr>
                       <td align="center"><code>2</code></td>
-                      <td>Time</td>
+                      <td>Late allocation.  Storage space for the entire dataset
+                        should not be allocated until the dataset is written
+                        to.
+                      </td>
                     </tr>
-
                     <tr>
                       <td align="center"><code>3</code></td>
-                      <td>String</td>
+                      <td>Incremental allocation.  Storage space for the
+                        dataset should not be allocated until the portion
+                        of the dataset is written to.  This is currently
+                        used in conjunction with chunked data storage for
+                        datasets.
+                      </td>
                     </tr>
+                </table></p>
+            
+          </td>
+	</tr>
 
+	<tr>
+	  <td><p>Fill Value Write Time</p></td>
+	  <td>
+            <p>At the time that storage space for the dataset’s raw data is
+                allocated, this value indicates whether the fill value should
+                be written to the raw data storage elements.  The allowed values
+                are:
+                <table class="list">
                     <tr>
-                      <td align="center"><code>4</code></td>
-                      <td>Bit field</td>
+                      <th width="20%" align="center">Value</th>
+                      <th width="80%" align="left">Description</th>
                     </tr>
 
                     <tr>
-                      <td align="center"><code>5</code></td>
-                      <td>Opaque</td>
+                      <td align="center"><code>0</code></td>
+                      <td>On allocation.  The fill value is always written to
+                        the raw data storage when the storage space is allocated.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Never.  The fill value should never be written to
+                        the raw data storage.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>Fill value written if set by user.  The fill value
+                        will be written to the raw data storage when the storage
+                        space is allocated only if the user explicitly set
+                        the fill value.  If the fill value is the library
+                        default or is undefined, it will not be written to
+                        the raw data storage.
+                      </td>
                     </tr>
+                </table></p>
+            
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Fill Value Defined</p></td>
+	  <td>
+            <p>This value indicates if a fill value is defined for this
+                dataset.  If this value is 0, the fill value is undefined.
+                If this value is 1, a fill value is defined for this dataset.
+                For version 2 or later of the fill value message, this value
+                controls the presence of the Size and Fill Value fields.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Size</p></td>
+	  <td>
+            <p>This is the size of the Fill Value field in bytes.  This field
+                is not present if the Version field is greater than 1, 
+                and the Fill Value Defined field is set to 0.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Fill Value</p></td>
+	  <td>
+            <p>The fill value.  The bytes of the fill value are interpreted
+                using the same datatype as for the dataset.  This field is
+                not present if the Version field is greater than 1, 
+                and the Fill Value Defined field is set to 0.
+            </p>
+          </td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Fill Value Message - Version 3
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Version</td>
+	  <td>Flags</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Size <em>(optional)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Fill Value Message - Version 3
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
+	<tr>
+	  <td><p>Version</p></td>
+	  <td>
+            <p>The version number information is used for changes in the
+                format of the fill value message and is described here:
+                <table class="list">
                     <tr>
-                      <td align="center"><code>6</code></td>
-                      <td>Compound</td>
+                      <th width="20%" align="center">Version</th>
+                      <th width="80%" align="left">Description</th>
                     </tr>
 
                     <tr>
-                      <td align="center"><code>7</code></td>
-                      <td>Reference</td>
+                      <td align="center"><code>0</code></td>
+                      <td>Never used
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Initial version of this message.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>In this version, the Size and Fill Value fields are
+                        only present if the Fill Value Defined field is set
+                        to 1.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>This version packs the other fields in the message
+                        more efficiently than version 2.
+                      </td>
                     </tr>
+                </table></p>
+            
+          </td>
+	</tr>
 
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td>
+            <p>When the storage space for the dataset’s raw data will be
+                allocated.  The allowed values are:
+                <table class="list">
                     <tr>
-                      <td align="center"><code>8</code></td>
-                      <td>Enumerated</td>
+                      <th width="20%" align="center">Bits</th>
+                      <th width="80%" align="left">Description</th>
                     </tr>
 
                     <tr>
-                      <td align="center"><code>9</code></td>
-                      <td>Variable-Length</td>
+                      <td align="center"><code>0-1</code></td>
+                      <td>Space Allocation Time, with the same
+                        values as versions 1 and 2 of the message.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2-3</code></td>
+                      <td>Fill Value Write Time, with the same
+                        values as versions 1 and 2 of the message.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>4</code></td>
+                      <td>Fill Value Undefined, indicating that the fill
+                        value has been marked as “undefined” for this dataset.
+                        Bits 4 and 5 cannot both be set.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>5</code></td>
+                      <td>Fill Value Defined, with the same values as
+                        versions 1 and 2 of the message.
+                        Bits 4 and 5 cannot both be set.
+                      </td>
                     </tr>
-
                     <tr>
-                      <td align="center"><code>10</code></td>
-                      <td>Array</td>
+                      <td align="center"><code>6-7</code></td>
+                      <td>Reserved (zero).
+                      </td>
                     </tr>
                 </table></p>
             
@@ -8981,201 +12448,190 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 	</tr>
 
 	<tr>
-	  <td><p>Class Bit Fields</p></td>
-	  <td>
-            <p>The information in these bit fields is specific to each datatype
-                class and is described below.  All bits not defined for a
-                datatype class are set to zero.
-            </p>
-          </td>
-	</tr>
-
-	<tr>
 	  <td><p>Size</p></td>
 	  <td>
-            <p>The size of a datatype element in bytes.
+            <p>This is the size of the Fill Value field in bytes.  This field
+                is not present if the Version field is greater than 1, 
+                and the Fill Value Defined flag is set to 0.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Properties</p></td>
+	  <td><p>Fill Value</p></td>
 	  <td>
-            <p>This variable-sized sequence of bytes encodes information
-                specific to each datatype class and is described for each class
-                below.  If there is no property information specified for a
-                datatype class, the size of this field is zero bytes.
+            <p>The fill value.  The bytes of the fill value are interpreted
+                using the same datatype as for the dataset.  This field is
+                not present if the Version field is greater than 1, 
+                and the Fill Value Defined flag is set to 0.
             </p>
           </td>
 	</tr>
-
       </table>
     </div>
     
 
-    <br />
-    <p>Class specific information for Fixed-Point Numbers (Class 0):</p>
+<h4><a name="LinkMessage">IV.A.2.g. The Link Message</a></h4>
 
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Link</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0006</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may be 
+      repeated. </td></tr>
+    <tr><td><b>Description:</b></td>
+    <td><p>This message encodes the information for a link in a 
+      group’s object header, when the group is storing its links 
+      “compactly”, or in the group’s fractal heap, 
+      when the group is storing its links “densely”.</p>
+      <p>A group is storing its links compactly when the fractal heap 
+      address in the <em><a href="#LinkInfoMessage">Link Info 
+      Message</a></em> is set to the “undefined address” 
+      value.</p></td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
     <div align="center">
-      <table class="desc">
-	<caption>
-	  Fixed-point Bit Field Description
-	</caption>
-
-	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
-	</tr>
+      <table class="format">
+    <caption>
+        Layout: Link Message
+    </caption>
 
 	<tr>
-	  <td><p>0</p></td>
-	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
-	    otherwise, byte order is big endian.</p></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>1, 2</p></td>
-	  <td><p><b>Padding type.</b>  Bit 1 is the lo_pad bit and bit 2
-	    is the hi_pad bit.  If a datum has unused bits at either
-	    end, then the lo_pad or hi_pad bit is copied to those
-	    locations.</p></td>
+	  <td>Version</td>
+	  <td>Flags</td>
+	  <td>Link type <em>(optional)</em></td>
+          <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
-
 	<tr>
-	  <td><p>3</p></td>
-	  <td><p><b>Signed.</b> If this bit is set then the fixed-point
-	    number is in 2’s complement form.</p></td>
+	  <td colspan="4"><br />Creation Order <em>(8 bytes, optional)</em><br /><br /></td>
 	</tr>
-
 	<tr>
-	  <td><p>4-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td>Link Name Character Set <em>(optional)</em></td>
+	  <td>Length of Link Name (variable size)</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
-      </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Fixed-Point Property Description
-	</caption>
-
 	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+	  <td colspan="4">Link Name (variable size)</td>
 	</tr>
-
 	<tr>
-	  <td colspan="2">Bit Offset</td>
-	  <td colspan="2">Bit Precision</td>
+	  <td colspan="4"><br />Link Information (variable size)<br /><br /></td>
 	</tr>
-      </table>
+    </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Link Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Bit Offset</p></td>
-	  <td>
-            <p>The bit offset of the first significant bit of the fixed-point
-                value within the datatype.  The bit offset specifies the number
-                of bits “to the right of” the value (which are set to the
-                lo_pad bit value).
-            </p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Bit Precision</p></td>
-	  <td>
-            <p>The number of bits of precision of the fixed-point value
-                within the datatype.  This value, combined with the datatype
-                element’s size and the Bit Offset field specifies the number
-                of bits “to the left of” the value (which are set to the
-                hi_pad bit value).
-            </p>
-          </td>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for this message. This document describes version 1.</p>
+	  </td>
 	</tr>
 
-      </table>
-    </div>
-    
-
-    <br />
-    <p>Class specific information for Floating-Point Numbers (Class 1):</p>
-
-    <div align="center">
-      <table class="desc">
-	<caption>
-	  Floating-Point Bit Field Description
-	</caption>
-
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
-	</tr>
+	<td><p>Flags</p></td>
+	  <td><p>This field contains information about the link and controls
+                the presence of other fields below.
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">Bits</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-	<tr>
-	  <td><p>0, 6</p></td>
-	  <td><p><b>Byte Order.</b> These two non-contiguous bits specify the 
-            “endianness” of the bytes in the datatype element.
-            <table class="list">
-                <tr>
-                  <th width="10%" align="center">Bit 6</th>
-                  <th width="10%" align="center">Bit 0</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+                    <tr>
+                      <td align="center"><code>0-1</code></td>
+                      <td>Determines the size of the <em>Length of Link Name</em>
+                        field.
+                        <table class="list">
+                            <tr>
+                              <th width="20%" align="center">Value</th>
+                              <th width="80%" align="left">Description</th>
+                            </tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td align="center"><code>0</code></td>
-                  <td>Byte order is little-endian
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td align="center"><code>1</code></td>
-                  <td>Byte order is big-endian
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td align="center"><code>0</code></td>
-                  <td>Reserved
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td align="center"><code>1</code></td>
-                  <td>Byte order is VAX-endian
-                  </td>
-                </tr>
-            </table></p>
+                            <tr>
+                              <td align="center"><code>0</code></td>
+                              <td>The size of the <em>Length of Link Name</em>
+                                field is 1 byte.
+                              </td>
+                            </tr>
+                            <tr>
+                              <td align="center"><code>1</code></td>
+                              <td>The size of the <em>Length of Link Name</em>
+                                field is 2 bytes.
+                              </td>
+                            </tr>
+                            <tr>
+                              <td align="center"><code>2</code></td>
+                              <td>The size of the <em>Length of Link Name</em>
+                                field is 4 bytes.
+                              </td>
+                            </tr>
+                            <tr>
+                              <td align="center"><code>3</code></td>
+                              <td>The size of the <em>Length of Link Name</em>
+                                field is 8 bytes.
+                              </td>
+                            </tr>
+                        </table>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2</code></td>
+                      <td>Creation Order Field Present: if set, the <em>Creation
+                        Order</em> field is present.  If not set, creation order
+                        information is not stored for links in this group.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>3</code></td>
+                      <td>Link Type Field Present: if set, the link is not
+                        a hard link and the <em>Link Type</em> field is present.
+                        If not set, the link is a hard link.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>4</code></td>
+                      <td>Link Name Character Set Field Present: if set, the
+                        link name is not represented with the ASCII character
+                        set and the <em>Link Name Character Set</em> field is
+                        present.  If not set, the link name is represented with
+                        the ASCII character set.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>5-7</code></td>
+                      <td>Reserved (zero).
+                      </td>
+                    </tr>
+                </table></p>
+          
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>1, 2, 3</p></td>
-	  <td><p><b>Padding type.</b>  Bit 1 is the low bits pad type, bit 2
-	    is the high bits pad type, and bit 3 is the internal bits
-	    pad type.  If a datum has unused bits at either end or between
-	    the sign bit, exponent, or mantissa, then the value of bit
-	    1, 2, or 3 is copied to those locations.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>4-5</p></td>
-	  <td><p><b>Mantissa Normalization.</b> This 2-bit bit field specifies
-            how the most significant bit of the mantissa is managed.
+	  <td><p>Link type</p></td>
+	  <td><p>This is the link class type and can be one of the following
+                values:
                 <table class="list">
                     <tr>
                       <th width="20%" align="center">Value</th>
@@ -9184,1177 +12640,1484 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 
                     <tr>
                       <td align="center"><code>0</code></td>
-                      <td>No normalization
+                      <td>A hard link (should never be stored in the file)
                       </td>
                     </tr>
                     <tr>
                       <td align="center"><code>1</code></td>
-                      <td>The most significant bit of the mantissa is always set
-                        (except for 0.0).
+                      <td>A soft link.
                       </td>
                     </tr>
                     <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>The most significant bit of the mantissa is not stored,
-                        but is implied to be set.
+                      <td align="center"><code>2-63</code></td>
+                      <td>Reserved for future HDF5 internal use.
                       </td>
                     </tr>
                     <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>Reserved.
+                      <td align="center"><code>64</code></td>
+                      <td>An external link.
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>65-255</code></td>
+                      <td>Reserved, but available for user-defined link types.
                       </td>
                     </tr>
                 </table></p>
-            </td>
-	</tr>
-
-	<tr>
-	  <td><p>7</p></td>
-	  <td><p>Reserved (zero).</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>8-15</p></td>
-	  <td><p><b>Sign Location.</b> This is the bit position of the sign
-	    bit.  Bits are numbered with the least significant bit zero.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>16-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
-	</tr>
-
-      </table>
-    </div>
-
-    <br />
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Floating-Point Property Description
-	</caption>
-
-	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+            
+	    <p>This field is present if bit 3 of <em>Flags</em> is set.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Bit Offset</td>
-	  <td colspan="2">Bit Precision</td>
+	  <td><p>Creation Order</p></td>
+	  <td><p>This 64-bit value is an index of the link’s creation time within
+            the group.  Values start at 0 when the group is created an increment
+            by one for each link added to the group.  Removing a link from a
+            group does not change existing links’ creation order field.
+            </p>
+	    <p>This field is present if bit 2 of <em>Flags</em> is set.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td>Exponent Location</td>
-	  <td>Exponent Size</td>
-	  <td>Mantissa Location</td>
-	  <td>Mantissa Size</td>
-	</tr>
+	  <td><p>Link Name Character Set</p></td>
+	  <td><p>This is the character set for encoding the link’s name:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
 
-	<tr>
-	  <td colspan="4">Exponent Bias</td>
-	</tr>
-      </table>
-    </div>
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>ASCII character set encoding (this should never be stored
+                    in the file)
+                  </td>
+                </tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>UTF-8 character set encoding
+                  </td>
+                </tr>
+            </table></p>
+            
+	    <p>This field is present if bit 4 of <em>Flags</em> is set.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Bit Offset</p></td>
-	  <td>
-            <p>The bit offset of the first significant bit of the floating-point
-                value within the datatype.  The bit offset specifies the number
-                of bits “to the right of” the value.
-            </p>
-          </td>
+	  <td><p>Length of link name</p></td>
+	  <td><p>This is the length of the link’s name.  The size of this field 
+	    depends on bits 0 and 1 of <em>Flags</em>.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Bit Precision</p></td>
-	  <td>
-            <p>The number of bits of precision of the floating-point value
-                within the datatype.
-            </p>
-          </td>
+	  <td><p>Link name</p></td>
+	  <td><p>This is the name of the link, non-NULL terminated.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Exponent Location</p></td>
-	  <td>
-            <p>The bit position of the exponent field.  Bits are numbered with
-                the least significant bit number zero.
+	  <td><p>Link information</p></td>
+	  <td><p>The format of this field depends on the <em>link type</em>.</p>
+            <p>For <b>hard</b> links, the field is formatted as follows:
+            
+            <table class="list">
+                <tr>
+                  <td width="20%"><i><a href="#SizeOfOffsetsV0">
+                  Size of Offsets</a></i> bytes:</td>
+                  <td width="80%">The address of the object header for the object that the
+                    link points to.
+                  </td>
+                </tr>
+            </table>
             </p>
-          </td>
-	</tr>
 
-	<tr>
-	  <td><p>Exponent Size</p></td>
-	  <td>
-            <p>The size of the exponent field in bits.
+            <p>
+            For <b>soft</b> links, the field is formatted as follows:
+            
+            <table class="list">
+                <tr>
+                  <td width="20%">Bytes 1-2:</td>
+                  <td width="80%">Length of soft link value.</td>
+                </tr>
+                <tr>
+                  <td><em>Length of soft link value</em> bytes:</td>
+                  <td>A non-NULL-terminated string storing the value of the
+                    soft link.
+                  </td>
+                </tr>
+            </table>
             </p>
-          </td>
-	</tr>
 
-	<tr>
-	  <td><p>Mantissa Location</p></td>
-	  <td>
-            <p>The bit position of the mantissa field.  Bits are numbered with
-                the least significant bit number zero.
+            <p>
+            For <b>external</b> links, the field is formatted as follows:
+            
+            <table class="list">
+                <tr>
+                  <td width="20%">Bytes 1-2:</td>
+                  <td width="80%">Length of external link value.</td>
+                </tr>
+                <tr>
+                  <td><em>Length of external link value</em> bytes:</td>
+                  <td>The first byte contains the version number in the 
+                  upper 4 bits and flags in the lower 4 bits for the external 
+                  link. Both version and flags are defined to be zero in 
+                  this document. The remaining bytes consist of two 
+                  NULL-terminated strings, with no padding between them. 
+                  The first string is the name of the HDF5 file containing 
+                  the object linked to and the second string is the full path 
+                  to the object linked to, within the HDF5 file’s 
+                  group hierarchy.
+                  </td>
+                </tr>
+            </table>
             </p>
-          </td>
-	</tr>
 
-	<tr>
-	  <td><p>Mantissa Size</p></td>
-	  <td>
-            <p>The size of the mantissa field in bits.
+            <p>
+            For <b>user-defined</b> links, the field is formatted as follows:
+            
+            <table class="list">
+                <tr>
+                  <td width="20%">Bytes 1-2:</td>
+                  <td width="80%">Length of user-defined data.</td>
+                </tr>
+                <tr>
+                  <td><em>Length of user-defined link value</em> bytes:</td>
+                  <td>The data supplied for the user-defined link type.</td>
+                </tr>
+            </table>
             </p>
-          </td>
-	</tr>
 
-	<tr>
-	  <td><p>Exponent Bias</p></td>
-	  <td>
-            <p>The bias of the exponent field.
-            </p>
           </td>
-	</tr>
-
+        </tr>
       </table>
     </div>
-    
 
-    <br />
-    <p>Class specific information for Time (Class 2):</p>
+<h4><a name="ExternalFileListMessage">IV.A.2.h. The Data Storage - 
+External Data Files Message</a></h4>
 
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> External 
+      Data Files</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0007</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The external data storage message indicates that the data 
+      for an object is stored outside the HDF5 file. The filename of 
+      the object is stored as a Universal Resource Location (URL) of 
+      the actual filename containing the data. An external file list 
+      record also contains the byte offset of the start of the data 
+      within the file and the amount of space reserved in the file 
+      for that data.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
     
     <div align="center">
-      <table class="desc">
-	<caption>
-	  Time Bit Field Description
-	</caption>
+      <table class="format">
+    <caption>
+        Layout: External File List Message
+    </caption>
 
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>0</p></td>
-	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
-	    otherwise, byte order is big endian.</p></td>
+	  <td>Version</td>
+	  <td colspan="3">Reserved (zero)</td>
 	</tr>
 
 	<tr>
-	  <td><p>1-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td colspan="2">Allocated Slots</td>
+	  <td colspan="2">Used Slots</td>
 	</tr>
-      </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Time Property Description
-	</caption>
 
 	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+	  <td colspan="4"><br />Heap Address<sup>O</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Bit Precision</td>
+	  <td colspan="4"><br />Slot Definitions...<br /><br /></td>
 	</tr>
       </table>
-    </div>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>	
 
     <br />
     <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
+	<table class="desc">
+    <caption>
+        Fields: External File List Message
+    </caption>
+	  <tr>
+	    <th width="30%">Field Name</th>
+	    <th>Description</th>
+	  </tr>
+	
+	  <tr>
+	    <td><p>Version</p></td>
+	    <td>
+	      <p>The version number information is used for changes in the format of
+                External Data Storage Message and is described here:
+		 <table class="list">
+		     <tr>
+			<th width="20%" align="center">Version</th>
+			<th width="80%" align="left">Description</th>
+		     </tr>
+		     <tr>
+			<td align="center"><code>0</code></td>
+			<td>Never used.</td>
+		     </tr>
+		     <tr>
+			<td align="center"><code>1</code></td>
+			<td>The current version used by the library.</td>
+		     </tr>
+		  </table></p>
+	      
+	    </td>
+	  </tr>
 
-	<tr>
-	  <td><p>Bit Precision</p></td>
-	  <td>
-            <p>The number of bits of precision of the time value.
-            </p>
-          </td>
-	</tr>
+	  <tr>
+	    <td><p>Allocated Slots</p></td>
+	    <td>
+	      <p>The total number of slots allocated in the message.  Its value must be at least as
+		 large as the value contained in the Used Slots field. (The current library simply
+		 uses the number of Used Slots for this message)</p>
+	    </td>
+	  </tr>
 
-      </table>
+	  <tr>
+	    <td><p>Used Slots</p></td>
+	    <td>
+	      <p>The number of initial slots which contains valid information.</p>
+	    </td>
+	  </tr>
+
+	  <tr>
+	    <td><p>Heap Address</p></td>
+	    <td>
+	      <p>This is the address of a local heap which contains the names for the external 
+		 files (The local heap information can be found in Disk Format Level 1D in this
+		 document).  The name at offset zero in the heap is always the empty string.</p>
+	    </td>
+	  </tr>
+
+	  <tr>
+	    <td><p>Slot Definitions</p></td>
+	    <td>
+	      <p>The slot definitions are stored in order according to the array addresses they 
+		 represent.</p>
+	    </td>
+	  </tr>
+
+	</table>
     </div>
-    
 
     <br />
-    <p>Class specific information for Strings (Class 3):</p>
-
-    
+    <br />
+    <br />
     <div align="center">
-      <table class="desc">
-	<caption>
-	  String Bit Field Description
-	</caption>
+      <table class="format">
+    <caption>
+        Layout: External File List Slot 
+    </caption>
 
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>0-3</p></td>
-	  <td><p><b>Padding type.</b>  This four-bit value determines the
-	    type of padding to use for the string.  The values are:
-
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>Null Terminate: A zero byte marks the end of the
-                    string and is guaranteed to be present after
-                    converting a long string to a short string.  When
-                    converting a short string to a long string the value is
-                    padded with additional null characters as necessary.
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>Null Pad: Null characters are added to the end of
-                    the value during conversions from short values to long
-                    values but conversion in the opposite direction simply
-                    truncates the value.
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>2</code></td>
-                  <td>Space Pad: Space characters are added to the end of
-                    the value during conversions from short values to long
-                    values but conversion in the opposite direction simply
-                    truncates the value.  This is the Fortran
-                    representation of the string.
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>3-15</code></td>
-                  <td>Reserved
-                  </td>
-                </tr>
-            </table></p>
-            </td>
+	  <td colspan="4"><br />Name Offset in Local Heap<sup>L</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td><p>4-7</p></td>
-	  <td><p><b>Character Set.</b>  The character set used to
-	    encode the string.
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>ASCII character set encoding
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>UTF-8 character set encoding
-                  </td>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>2-15</code></td>
-                  <td>Reserved
-                  </td>
-                </tr>
-            </table></p>
-          </td>
+	  <td colspan="4"><br />Offset in External Data File<sup>L</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td><p>8-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td colspan="4"><br />Data Size in External File<sup>L</sup><br /><br /></td>
 	</tr>
       </table>
-    </div>
 
-    <p>There are no properties defined for the string class.
-    </p>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>	
+
+    <br />
+    <div align="center">
+	<table class="desc">
+    <caption>
+        Fields: External File List Slot 
+    </caption>
+	  <tr>
+	    <th width="30%">Field Name</th>
+	    <th>Description</th>
+	  </tr>
+	
+	  <tr>
+	    <td><p>Name Offset in Local Heap</p></td>
+	    <td>
+		<p>The byte offset within the local name heap for the name
+	    	of the file.  File names are stored as a URL which has a
+	    	protocol name, a host name, a port number, and a file
+	    	name:
+		<code><em>protocol</em>:<em>port</em>//<em>host</em>/<em>file</em></code>.
+		If the protocol is omitted then “file:” is assumed.  If
+		the port number is omitted then a default port for that
+		protocol is used.  If both the protocol and the port
+		number are omitted then the colon can also be omitted. If
+		the double slash and host name are omitted then
+		“localhost” is assumed.  The file name is the only
+		mandatory part, and if the leading slash is missing then
+		it is relative to the application’s current working
+		directory (the use of relative names is not
+		recommended).
+                </p>
+	    </td>
+	  </tr>
+
+	  <tr>
+	    <td><p>Offset in External Data File</p></td>
+	    <td>
+	  	<p>This is the byte offset to the start of the data in the
+	        specified file. For files that contain data for a single
+	        dataset this will usually be zero.</p>
+	    </td>
+	  </tr>
+
+	  <tr>
+	    <td><p>Data Size in External File</p></td>
+	    <td>
+		<p>This is the total number of bytes reserved in the
+		specified file for raw data storage.  For a file that
+		contains exactly one complete dataset which is not
+		extendable, the size will usually be the exact size of the
+		dataset.  However, by making the size larger one allows
+		HDF5 to extend the dataset. The size can be set to a value
+		larger than the entire file since HDF5 will read zeroes
+		past the end of the file without failing.</p>
+	    </td>
+	  </tr>
+	</table>
+    </div>
     
 
-    <p>Class specific information for bit fields (Class 4):</p>
+<h4><a name="LayoutMessage">IV.A.2.i. The Data Layout Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Data Layout</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0008</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Required for datasets; may not 
+      be repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The Data Layout message 
+      describes how the elements of a multi-dimensional array are stored 
+      in the HDF5 file. Four types of data layout are supported:
+      <ol>
+        <li>Contiguous: The array is stored in one contiguous area of 
+        the file. This layout requires that the size of the array be 
+        constant: data manipulations such as chunking, compression, 
+        checksums, or encryption are not permitted. The message stores 
+        the total storage size of the array. The offset of an element 
+        from the beginning of the storage area is computed as in a C 
+        array.</li>
+        <li>Chunked: The array domain is regularly decomposed into 
+        chunks, and each chunk is allocated and stored separately. This 
+        layout supports arbitrary element traversals, compression, 
+        encryption, and checksums (these features are described 
+        in other messages). The message stores the size of a chunk 
+        instead of the size of the entire array; the storage size of 
+        the entire array can be calculated by traversing the chunk index
+        that stores the chunk addresses.</li>
+        <li>Compact: The array is stored in one contiguous block as 
+        part of this object header message.</li>
+        <li>Virtual: This is only supported for version 4 of the Data 
+        Layout message. The message stores information that is used to 
+        locate the global heap collection containing the Virtual Dataset 
+        (VDS) mapping information. The mapping associates the VDS to 
+        the source dataset elements that are stored across a collection 
+        of HDF5 files.</li>
+      </ol></td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
     
     <div align="center">
-      <table class="desc">
-	<caption>
-	  Bitfield Bit Field Description
-	</caption>
-
-	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
-	</tr>
+      <table class="format">
+    <caption>
+        Layout: Data Layout Message (Versions 1 and 2)
+    </caption>
 
 	<tr>
-	  <td><p>0</p></td>
-	  <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
-	    otherwise, byte order is big endian.</p></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>1, 2</p></td>
-	  <td><p><b>Padding type.</b>  Bit 1 is the lo_pad type and bit 2
-	    is the hi_pad type.  If a datum has unused bits at either
-	    end, then the lo_pad or hi_pad bit is copied to those
-	    locations.</p></td>
+	  <td>Version</td>
+	  <td>Dimensionality</td>
+	  <td>Layout Class</td>
+	  <td>Reserved <em>(zero)</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>3-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td colspan="4">Reserved <em>(zero)</em></td>
 	</tr>
-      </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Bit Field Property Description
-	</caption>
 
 	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+	  <td colspan="4"><br />Data Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Bit Offset</td>
-	  <td colspan="2">Bit Precision</td>
+	  <td colspan="4">Dimension 0 Size</td>
 	</tr>
-      </table>
-    </div>
 
-    <br />
-    <div align="center">
-      <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <td colspan="4">Dimension 1 Size</td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>Bit Offset</p></td>
-	  <td>
-            <p>The bit offset of the first significant bit of the bit field
-                within the datatype.  The bit offset specifies the number
-                of bits “to the right of” the value.
-            </p>
-          </td>
+	  <td colspan="4">...</td>
 	</tr>
 
 	<tr>
-	  <td><p>Bit Precision</p></td>
-	  <td>
-            <p>The number of bits of precision of the bit field
-                within the datatype.
-            </p>
-          </td>
+	  <td colspan="4">Dimension #n Size</td>
 	</tr>
-      </table>
-    </div>
-    
-
-    <br />
-    <p>Class specific information for Opaque (Class 5):</p>
-    
-    <div align="center">
-      <table class="desc">
-	<caption>
-	  Opaque Bit Field Description
-	</caption>
-
+	
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <td colspan="4">Dataset Element Size <em>(optional)</em></td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>0-7</p></td>
-	  <td><p>Length of ASCII tag in bytes.</p></td>
+	  <td colspan="4">Compact Data Size <em>(optional)</em></td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>8-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td colspan="4"><br />Compact Data... <em>(variable size, optional)</em><br /><br /></td>
 	</tr>
       </table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Opaque Property Description
-	</caption>
-
-	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	</tr>
 
-	<tr>
-	  <td colspan="4"><br />ASCII Tag<br />
-	    <br /></td>
-	</tr>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Layout Message (Versions 1 and 2)
+    </caption>
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <th width="30%">Field Name</th>
+	  <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>ASCII Tag</p></td>
+	  <td><p>Version</p></td>
 	  <td>
-            <p>This NUL-terminated string provides a description for the
-                opaque type.  It is NUL-padded to a multiple of 8 bytes.
-            </p>
-          </td>
-	</tr>
-      </table>
-    </div>
-    
+	    <p>The version number information is used for changes in the format of the data 
+	    layout message and is described here:
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Version</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-    <br />
-    <p>Class specific information for Compound (Class 6):</p>
-    
-    <div align="center">
-      <table class="desc">
-	<caption>
-	  Compound Bit Field Description
-	</caption>
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td>Never used.</td>
+		</tr>
 
-	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
-	</tr>
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td>Used by version 1.4 and before of the library to encode layout information.
+		      Data space is always allocated when the data set is created.</td>
+		</tr>
 
-	<tr>
-	  <td><p>0-15</p></td>
-	  <td><p><b>Number of Members.</b> This field contains the number
-	    of members defined for the compound datatype.  The member
-	    definitions are listed in the Properties field of the data
-	    type message.</p></td>
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td>Used by version 1.6.x of the library to encode layout information.
+		      Data space is allocated only when it is necessary.</td>
+		</tr>
+	      </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>16-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td><p>Dimensionality</p></td>
+	  <td><p>An array has a fixed dimensionality.  This field 
+	    specifies the number of dimension size fields later in the 
+	    message. The value stored for chunked storage is 1 greater than 
+        the number of dimensions in the dataset’s dataspace. 
+        For example, 2 is stored for a 1 dimensional dataset.
+            </p>
+          </td>
 	</tr>
-      </table>
-    </div>
-    
 
-    <p>The Properties field of a compound datatype is a list of the
-      member definitions of the compound datatype.  The member
-      definitions appear one after another with no intervening bytes.
-      The member types are described with a (recursively) encoded datatype
-      message.</p>
+	<tr>
+	  <td><p>Layout Class</p></td>
+	  <td><p>The layout class specifies the type of storage for the data
+            and how the other fields of the layout message are to be
+            interpreted.
+            
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Value</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-    <p>Note that the property descriptions are different for different
-      versions of the datatype version.  Additionally note that the version
-      0 datatype encoding is deprecated and has been replaced with later
-      encodings in versions of the HDF5 Library from the 1.4 release 
-      onward.</p>
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td>Compact Storage
+                  </td>
+		</tr>
 
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Compound Properties Description for Datatype Version 1
-	</caption>
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td>Contiguous Storage
+                  </td>
+		</tr>
 
-	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td>Chunked Storage
+                  </td>
+		</tr>
+	      </table>
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name<br /><br /></td>
+	  <td><p>Data Address</p></td>
+	  <td><p>For contiguous storage, this is the address of the raw
+	    data in the file.  For chunked storage this is the address
+	    of the <a href="#V1Btrees">v1 B-tree</a> that is used to look up the addresses of the
+	    chunks.  This field is not present for compact storage.
+            If the version for this message is greater than 1, the address
+            may have the “undefined address” value, to indicate that
+            storage has not yet been allocated for this array.</p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Byte Offset of Member</td>
+	  <td><p>Dimension #n Size</p></td>
+	  <td><p>For contiguous and compact storage the dimensions define
+            the entire size of the array while for chunked storage they define
+            the size of a single chunk.  In all cases, they are in units of 
+            array elements (not bytes).  The first dimension stored in the list
+            of dimensions is the slowest changing dimension and the last
+            dimension stored is the fastest changing dimension.
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td>Dimensionality</td>
-	  <td colspan="3">Reserved (zero)</td>
+	  <td><p>Dataset Element Size</p></td>
+	  <td><p>The size of a dataset element, in bytes.  This field is only
+            present for chunked storage.
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension Permutation</td>
-	</tr>
+	  <td><p>Compact Data Size</p></td>
+	  <td><p>This field is only present for compact data storage.
+            It contains the size of the raw data for the dataset array, in
+            bytes.</p>
+          </td>
+    </tr>
 
 	<tr>
-	  <td colspan="4">Reserved (zero)</td>
+	  <td><p>Compact Data</p></td>
+	  <td><p>This field is only present for compact data storage.
+            It contains the raw data for the dataset array.</p>
+          </td>
 	</tr>
+      </table>
+    </div>
 
-	<tr>
-	  <td colspan="4">Dimension #1 Size (required)</td>
-	</tr>
+    <br />
+    <p>Version 3 of this message re-structured the format into specific
+        properties that are required for each layout class.</p>
 
-	<tr>
-	  <td colspan="4">Dimension #2 Size (required)</td>
-	</tr>
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Data Layout Message (Version 3)
+    </caption>
 
 	<tr>
-	  <td colspan="4">Dimension #3 Size (required)</td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension #4 Size (required)</td>
+	  <td>Version</td>
+	  <td>Layout Class</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	  <td colspan="4"><br />Properties <em>(variable size)</em><br /><br /></td>
 	</tr>
-
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Layout Message (Version 3)
+    </caption>
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <th width="30%">Field Name</th>
+	  <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
+	  <td><p>Version</p></td>
 	  <td>
-            <p>This NUL-terminated string provides a description for the
-                opaque type.  It is NUL-padded to a multiple of 8 bytes.
-            </p>
-          </td>
-	</tr>
+	    <p>The version number information is used for changes in the format of layout message
+	       and is described here:
+	      <table class="list">	
+		<tr>
+		  <th width="20%" align="center">Version</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-	<tr>
-	  <td><p>Byte Offset of Member</p></td>
-	  <td>
-            <p>This is the byte offset of the member within the datatype.
-            </p>
-          </td>
+		<tr>
+		  <td align="center"><code>3</code></td>
+		  <td>Used by the version 1.6.3 and later of the library to store properties 
+		      for each layout class.</td>
+		</tr>
+	      </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
-	  <td>
-            <p>If set to zero, this field indicates a scalar member.  If set
-                to a value greater than zero, this field indicates that the
-                member is an array of values.  For array members, the size of
-                the array is indicated by the ‘Size of Dimension n’ field in
-                this message.
-            </p>
-          </td>
-	</tr>
+	  <td><p>Layout Class</p></td>
+	  <td><p>The layout class specifies the type of storage for the data
+            and how the other fields of the layout message are to be
+            interpreted.
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Value</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-	<tr>
-	  <td><p>Dimension Permutation</p></td>
-	  <td>
-            <p>This field was intended to allow an array field to have 
-                its dimensions permuted, but this was never implemented.
-                This field should always be set to zero.
-            </p>
-          </td>
-	</tr>
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td>Compact Storage 
+                  </td>
+		</tr>
 
-	<tr>
-	  <td><p>Dimension #n Size</p></td>
-	  <td>
-            <p>This field is the size of a dimension of the array field as
-            stored in the file.  The first dimension stored in the list of
-            dimensions is the slowest changing dimension and the last
-            dimension stored is the fastest changing dimension.
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td>Contiguous Storage
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td>Chunked Storage
+                  </td>
+		</tr>
+	      </table>
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Member Type Message</p></td>
-	  <td>
-            <p>This field is a datatype message describing the datatype of
-            the member.
-            </p>
-          </td>
+	  <td><p>Properties</p></td>
+	  <td><p>This variable-sized field encodes information specific to each
+            layout class and is described below.  If there is no property
+            information specified for a layout class, the size of this field
+            is zero bytes.</p></td>
 	</tr>
-
       </table>
     </div>
 
     <br />
-    <br />
+    <a name="CompactStorage"></a>
+    <p>Class-specific information for compact storage (layout class 0):  (Note: The dimensionality information
+       is in the Dataspace message)</p>
+
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Compound Properties Description for Datatype Version 2
-	</caption>
-
-	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	</tr>
+    <caption>
+        Layout: Compact Storage Property Description
+    </caption>
 
 	<tr>
-	  <td colspan="4"><br />Name<br /><br /></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Byte Offset of Member</td>
+	  <td colspan="2">Size</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
-
+	
 	<tr>
-	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	  <td colspan="4"><br />Raw Data... <em>(variable size)</em><br /><br /></td>
 	</tr>
-
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Compact Storage Property Description
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td>
-            <p>This NUL-terminated string provides a description for the
-                opaque type.  It is NUL-padded to a multiple of 8 bytes.
-            </p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Byte Offset of Member</p></td>
-	  <td>
-            <p>This is the byte offset of the member within the datatype.
-            </p>
+	  <td><p>Size</p></td>
+	  <td><p>This field contains the size of the raw data for the dataset
+                array, in bytes.
+              </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Member Type Message</p></td>
-	  <td>
-            <p>This field is a datatype message describing the datatype of
-            the member.
-            </p>
-          </td>
+	  <td><p>Raw Data</p></td>
+	  <td><p>This field contains the raw data for the dataset array.</p></td>
 	</tr>
-
       </table>
     </div>
     
 
     <br />
-    <br />
+    <a name="ContiguousStorage"></a>
+    <p>Class-specific information for contiguous storage (layout class 1):  
+    (Note: The dimensionality information is in the Dataspace message)</p>
+
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Compound Properties Description for Datatype Version 3
-	</caption>
-
-	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	</tr>
+    <caption>
+        Layout: Contiguous Storage Property Description
+    </caption>
 
 	<tr>
-	  <td colspan="4"><br />Name<br /><br /></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Byte Offset of Member <em>(variable size)</em></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Member Type Message<br /><br /></td>
+	  <td colspan="4"><br />Size<sup>L</sup><br /><br /></td>
 	</tr>
+      </table>
 
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Contiguous Storage Property Description
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>This NUL-terminated string provides a description for the 
-      opaque type. It is <em>not</em> NUL-padded to a multiple of 8 
-      bytes.</p></td>
-	</tr>
-
-	<tr>
-        <td><p>Byte Offset of Member</p></td>
-        <td><p>This is the byte offset of the member within the datatype. 
-        The field size is the minimum number of bytes necessary, 
-        based on the size of the datatype element. For example, a 
-        datatype element size of less than 256 bytes uses a 1 byte 
-        length, a datatype element size of 256-65535 bytes uses a 
-        2 byte length, and so on.</p></td>
+	  <td><p>Address</p></td>
+	  <td><p>This is the address of the raw data in the file.
+            The address may have the “undefined address” value, to indicate
+            that storage has not yet been allocated for this array.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Member Type Message</p></td>
-	  <td><p>This field is a datatype message describing the datatype of
-        the member.</p></td>
+	  <td><p>Size</p></td>
+	  <td><p>This field contains the size allocated to store the raw data,
+                in bytes.
+              </p>
+          </td>
 	</tr>
-
       </table>
     </div>
     
 
     <br />
-    <p>Class specific information for Reference (Class 7):</p>
+    <p>Class-specific information for chunked storage (layout class 2):</p>
+
     
     <div align="center">
-      <table class="desc">
-	<caption>
-	  Reference Bit Field Description
-	</caption>
+      <table class="format">
+    <caption>
+        Layout: Chunked Storage Property Description
+    </caption>
 
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>0-3</p></td>
-	  <td><p><b>Type.</b> This four-bit value contains the type of reference
-            described.  The values defined are:
-
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	  <td>Dimensionality</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>Object Reference: A reference to another object in this
-                    HDF5 file.
-                  </td>
-                </tr>
+	<tr>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>Dataset Region Reference: A reference to a region within
-                    a dataset in this HDF5 file.
-                  </td>
-                </tr>
+	<tr>
+	  <td colspan="4">Dimension 0 Size</td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>2-15</code></td>
-                  <td>Reserved
-                  </td>
-                </tr>
-            </table></p>
+	<tr>
+	  <td colspan="4">Dimension 1 Size</td>
+	</tr>
+	
+	<tr>
+	  <td colspan="4">...</td>
+	</tr>
 
-            </td>
+	<tr>
+	  <td colspan="4">Dimension #n Size</td>
 	</tr>
 
 	<tr>
-	  <td><p>4-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td colspan="4">Dataset Element Size</td>
 	</tr>
       </table>
-    </div>
 
-    <p>There are no properties defined for the reference class.
-    </p>
-    
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
 
     <br />
-    <p>Class specific information for Enumeration (Class 8):</p>
-    
     <div align="center">
       <table class="desc">
-	<caption>
-	  Enumeration Bit Field Description
-	</caption>
+    <caption>
+        Fields: Chunked Storage Property Description
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <td><p>Dimensionality</p></td>
+	  <td><p>A chunk has a fixed dimensionality.  This field specifies 
+	    the number of dimension size fields later in the message.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>0-15</p></td>
-	  <td><p><b>Number of Members.</b> The number of name/value
-	    pairs defined for the enumeration type.</p></td>
+	  <td><p>Address</p></td>
+	  <td><p>This is the address of the <a href="#V1Btrees">v1 B-tree</a>
+	    that is used to look up the
+            addresses of the chunks that actually store portions of the array
+            data.  The address may have the “undefined address” value, to
+            indicate that storage has not yet been allocated for this array.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>16-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+	  <td><p>Dimension #n Size</p></td>
+	  <td><p>These values define the dimension size of a single chunk, in
+            units of array elements (not bytes).  The first dimension stored in
+            the list of dimensions is the slowest changing dimension and the
+            last dimension stored is the fastest changing dimension.
+            </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Dataset Element Size</p></td>
+	  <td><p>The size of a dataset element, in bytes.
+            </p>
+          </td>
 	</tr>
       </table>
     </div>
 
+
     <br />
-    <br />
+
+    <p><a name="DataLayoutV4">
+    Version 4</a> of this message is similar to version 3 but has 
+    additional information for the virtual layout class as well as 
+    indexing information for the chunked layout class.</p>
+
     <div align="center">
       <table class="format">
-	<caption>
-	  Enumeration Property Description for Datatype Versions 1 & 2
-	</caption>
+    <caption>
+        Layout: Data Layout Message (Version 4)
+    </caption>
 
 	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Base Type<br /><br /></td>
+	  <td>Version</td>
+	  <td>Layout Class</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Names<br /><br /></td>
+	  <td colspan="4"><br />Properties <em>(variable size)</em><br /><br /></td>
 	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Values<br /><br /></td>
-        </tr>
-
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Layout Message (Version 4)
+    </caption>
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <th width="30%">Field Name</th>
+	  <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Base Type</p></td>
+	  <td><p>Version</p></td>
 	  <td>
-            <p>Each enumeration type is based on some parent type, usually an
-                integer. The information for that parent type is described
-                recursively by this field.
-            </p>
-          </td>
+	    <p>The value for this field is 4 and is used by version 1.10.0 
+        and later of the library to store properties for each layout 
+        class and indexing information for the chunked layout.
+	    </p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Names</p></td>
-	  <td>
-            <p>The name for each name/value pair. Each name is stored as a null
-                terminated ASCII string in a multiple of eight bytes. The names
-                are in no particular order.
-            </p>
+	  <td><p>Layout Class</p></td>
+	  <td><p>The layout class specifies the type of storage for the data
+            and how the other fields of the layout message are to be
+            interpreted.
+	      <table class="list">
+            <tr>
+                <th width="20%" align="center">Value</th>
+                <th width="80%" align="left">Description</th>
+            </tr>
+
+            <tr>
+                <td align="center"><code>0</code></td>
+                <td>Compact Storage
+                  </td>
+            </tr>
+
+            <tr>
+                <td align="center"><code>1</code></td>
+                <td>Contiguous Storage
+                  </td>
+            </tr>
+
+            <tr>
+                <td align="center"><code>2</code></td>
+                <td>Chunked Storage
+                  </td>
+            </tr>
+            <tr>
+                <td align="center"><code>3</code></td>
+                <td>Virtual Storage
+                  </td>
+            </tr>
+          </table>
+          </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Values</p></td>
-	  <td>
-            <p>The list of values in the same order as the names.  The values
-                are packed (no inter-value padding) and the size of each value
-                is determined by the parent type.
-            </p>
-          </td>
-	</tr>
+	  <td><p>Properties</p></td>
+	  <td><p>This variable-sized field encodes information specific to a 
+            layout class as follows:
+	      <table class="list">
+            <tr>
+                <th align="left" width="20%">Layout Class</th>
+                <th align="left" width="80%">Description</th>
+            </tr>
+
+            <tr>
+                <td align="left">Compact Storage</td>
+                <td>See <a href="#CompactStorage">Compact Storage 
+                Property Description</i></a> for the version 3 
+                Data Layout message.
+                </td>
+            </tr>
+
+            <tr>
+                <td align="left">Contiguous Storage</td>
+                <td>See <a href="#ContiguousStorage">Contiguous Storage 
+                Property Description</i></a> for the version 3 
+                Data Layout message.
+                  </td>
+            </tr>
+
+            <tr>
+                <td align="left">Chunked Storage</td>
+                <td>See <a href="#ChunkedStorage">Chunked Storage 
+                Property Description</i></a> below.
+                  </td>
+            </tr>
+
+            <tr>
+                <td align="left">Virtual Storage</td>
+                <td>See <a href="#VirtualStorage">Virtual Storage 
+                Property Description</i></a> below.
+                  </td>
+            </tr>
+	      </table>
 
+	    </p></td>
+	</tr>
       </table>
     </div>
 
     <br />
-    <br />
+    <a name="ChunkedStorage"></a>
+    <p>Class-specific information for chunked storage (layout 
+    class 2):</p>
+
     <div align="center">
       <table class="format">
-	<caption>
-	  Enumeration Property Description for Datatype Version 3
-	</caption>
+    <caption>
+        Layout: Chunked Storage Property Description
+    </caption>
 
 	<tr>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
-	  <th width="25%">Byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
+	<tr>
+	  <td>Flags</td>
+	  <td>Dimensionality</td>
+	  <td>Dimension Size Encoded Length</td>
+          <td colspan="1" bgcolor="#DDDDDD"><em>This space inserted to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension 0 Size <em>(variable size)</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Dimension 1 Size <em>(variable size)</em></td>
+	</tr>
+	
+	<tr>
+	  <td colspan="4">...</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Base Type<br /><br /></td>
+	  <td colspan="4">Dimension #n Size <em>(variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Names<br /><br /></td>
+	  <td>Chunk Indexing Type</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Values<br /><br /></td>
-        </tr>
+	  <td colspan="4">Indexing Type Information <em>(variable size)</em></td>
+	</tr>
 
+	<tr>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
+	</tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Chunked Storage Property Description
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Base Type</p></td>
-	  <td>
-            <p>Each enumeration type is based on some parent type, usually an
-                integer. The information for that parent type is described
-                recursively by this field.
-            </p>
-          </td>
+	  <td><p>Flags</p></td>
+	  <td><p>This is the chunked layout feature flag:</p>
+
+	      <table class="list">
+		<tr>
+		  <th width="55%" align="left">Value</th>
+		  <th width="45%" align="left">Description</th>
+		</tr>
+
+		<tr>
+		  <td align="left"><code>DONT_FILTER_PARTIAL_BOUND_CHUNKS (bit 0)</code></td>
+		  <td>Do not apply filter to a partial edge chunk.
+
+                  </td>
+		</tr>
+
+		<tr>
+		  <td align="left"><code>SINGLE_INDEX_WITH_FILTER (bit 1)</code></td>
+		  <td>A filtered chunk for <i>Single Chunk</i> indexing.
+                  </td>
+		</tr>
+
+	      </table>
+
+	    </td>
+
 	</tr>
 
 	<tr>
-	  <td><p>Names</p></td>
-	  <td>
-            <p>The name for each name/value pair. Each name is stored as a null
-                terminated ASCII string, <em>not</em> padded to a multiple of
-                eight bytes. The names are in no particular order.
-            </p>
-          </td>
+	  <td><p>Dimensionality</p></td>
+	  <td><p>A chunk has fixed dimension.  This field specifies 
+	    the number of <em>Dimension Size</em> fields later in the message.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Values</p></td>
+	  <td><p>Dimension Size Encoded Length</p></td>
 	  <td>
-            <p>The list of values in the same order as the names.  The values
-                are packed (no inter-value padding) and the size of each value
-                is determined by the parent type.
+	    <p>This is the size in bytes used to encode <em>Dimension Size</em>.
             </p>
-          </td>
+	  </td>
 	</tr>
 
-      </table>
-    </div>
-    
-
-
-    <br />
-    <p>Class specific information for Variable-Length (Class 9):</p>
-    
-    <div align="center">
-      <table class="desc">
-	<caption>
-	  Variable-Length Bit Field Description
-	</caption>
-
 	<tr>
-	  <th width="10%">Bits</th>
-	  <th>Meaning</th>
+	  <td><p>Dimension #n Size</p></td>
+	  <td><p>These values define the dimension size of a single chunk, in
+            units of array elements (not bytes).  The first dimension stored in
+            the list of dimensions is the slowest changing dimension and the
+            last dimension stored is the fastest changing dimension.
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td><p>0-3</p></td>
-	  <td><p><b>Type.</b> This four-bit value contains the type of
-            variable-length datatype described.  The values defined are:
+	  <td><p>Chunk Indexing Type</p></td>
+	  <td><p>There are five indexing types used to look up addresses 
+      of the chunks. For more information on each type, see 
+      <a href="#AppendixC">“Appendix C: Types of Indexes for 
+      Dataset Chunks.”</a>
+	      <table class="list">
+		<tr>
+		  <th width="20%" align="center">Value</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td><a href="#SingleChunk"><i>Single Chunk</i></a> indexing type.  
+                  </td>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>Sequence: A variable-length sequence of any datatype.
-                    Variable-length sequences do not have padding or
-                    character set information.
+		<tr>
+		  <td align="center"><code>2</code></td>
+		  <td><a href="#Implicit"><i>Implicit</i></a> indexing type.
                   </td>
-                </tr>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>String: A variable-length sequence of characters.
-                    Variable-length strings have padding and character set
-                    information.
+		<tr>
+		  <td align="center"><code>3</code></td>
+		  <td><a href="#FixedArray"><i>Fixed Array</i></a> indexing type.
                   </td>
-                </tr>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>2-15</code></td>
-                  <td>Reserved
+		<tr>
+		  <td align="center"><code>4</code></td>
+		  <td><a href="#ExtensibleArray"><i>Extensible Array</i></a> indexing type.
                   </td>
-                </tr>
-            </table></p>
+		</tr>
 
-            </td>
+		<tr>
+		  <td align="center"><code>5</code></td>
+		  <td><a href="#V2Btrees"><i>Version 2 B-tree</i></a> indexing type.
+                  </td>
+		</tr>
+
+	      </table>
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td><p>4-7</p></td>
-	  <td><p><b>Padding type.</b> (variable-length string only)
-                  This four-bit value determines the type of padding 
-                  used for variable-length strings.  The values are the same 
-                  as for the string padding type, as follows:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	  <td><p>Indexing Type Information</p></td>
+	  <td><p>This variable-sized field encodes information specific to 
+      an indexing type. More information on what is encoded with 
+      each type can be found below this table.
+        <ul>
+        <li>See <a href="#IndexInfoSingle"><i>Single Chunk</i></a> below.</li>
+        <li>See <a href="#IndexInfoImplicit"><i>Implicit</i></a> below.</li>
+        <li>See <a href="#IndexInfoFixed"><i>Fixed Array</i></a> below.</li>
+        <li>See <a href="#IndexInfoExtensible"><i>Extensible Array</i></a> below.</li>
+        <li>See <a href="#IndexInfoV2Btrees"><i>Version 2 B-tree</i></a> below.</li>
+        </ul>
+        </p>
+      </td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>Null terminate: A zero byte marks the end of a string
-                    and is guaranteed to be present after converting a long
-                    string to a short string.  When converting a short string
-                    to a long string, the value is padded with additional null
-                    characters as necessary.
+	<tr>
+	  <td><p>Address</p></td>
+	  <td><p>This is the address specific to an indexing type.
+		 The address may be undefined if the chunk or index storage is not allocated yet.
+	      <table class="list">
+		<tr>
+		  <th width="40%" align="left">Value</th>
+		  <th width="60%" align="left">Description</th>
+		</tr>
+
+		<tr>
+		  <td align="left"><i>Single Chunk index</i></td>
+		  <td align="left">Address of the single chunk.</td>
                   </td>
-                </tr>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>Null pad: Null characters are added to the end of the
-                    value during conversion from a short string to a longer
-                    string.  Conversion from a long string to a shorter string
-                    simply truncates the value.
+		<tr>
+		  <td align="left"><i>Implicit index</i></td>
+		  <td align="left">Address of the array of dataset chunks.</td>
                   </td>
-                </tr>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>2</code></td>
-                  <td>Space pad: Space characters are added to the end of the
-                    value during conversion from a short string to a longer
-                    string.  Conversion from a long string to a shorter string
-                    simply truncates the value.  This is the Fortran
-                    representation of the string.
+		<tr>
+		  <td align="left"><i>Fixed Array index</i></td>
+		  <td align="left">Address of the index.</td>
+		</tr>
+
+		<tr>
+		  <td align="left"><i>Extensible Array index</i></td>
+		  <td align="left">Address of the index.</td>
                   </td>
-                </tr>
+		</tr>
 
-                <tr>
-                  <td align="center"><code>3-15</code></td>
-                  <td>Reserved
+		<tr>
+		  <td align="left"><i>Version 2 B-tree index</i></td>
+		  <td align="left">Address of the index.</td>
                   </td>
-                </tr>
-            </table></p>
+		</tr>
 
-            <p>This value is set to zero for variable-length sequences.</p>
+	      </table>
 
+            </p>
           </td>
 	</tr>
 
+      </table>
+    </div>
+
+    <br />
+
+<ol>
+    <li>
+    <a name="IndexInfoSingle">
+    Index-specific information for <i>Single Chunk</i>:
+    </li>
+    
+    <p>The following information exists only when the chunk is filtered. 
+    In other words, when <code>DONT_FILTER_PARTIAL_BOUND_CHUNKS</code> 
+    (bit 0) is enabled in the field <em>flags</em>.</p>
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Single Chunk Indexing Information
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
+
 	<tr>
-	  <td><p>8-11</p></td>
-	  <td><p><b>Character Set.</b> (variable-length string only)
-                  This four-bit value specifies the character set 
-                  to be used for encoding the string:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	  <td colspan="4"><br />Size of filtered chunk<sup>L</sup><br /><br /></td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>ASCII character set encoding
-                  </td>
-                </tr>
+	<tr>
+	  <td colspan="4">Filters for chunk</td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>UTF-8 character set encoding
-                  </td>
-                </tr>
+      </table>
 
-                <tr>
-                  <td align="center"><code>2-15</code></td>
-                  <td>Reserved
-                  </td>
-                </tr>
-            </table></p>
+      <table class="note">
+        <tr>
+            <td width="55%"> </td>
+            <td width="45%"> <!-- width is slightly different: these 
+            tables are part of an ordered list; see <ol> tags. -->
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Single Chunk Indexing Information
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
+
+	<tr>
+	  <td><p>Size of filtered chunk</p></td>
+	  <td><p>This field is the size of a filtered chunk.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>Filters for chunk</p></td>
+	  <td><p>This field contains filters for the chunk.</p></td>
+	</tr>
+      </table>
+    </div>
+    </p>
 
-            <p>This value is set to zero for variable-length sequences.</p>
+    <br />
 
-          </td>
+<li>
+    <a name="IndexInfoImplicit">
+    Index-specific information for <i>Implicit</i>:
+</li>
+
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Implicit Indexing Information
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>12-23</p></td>
-	  <td><p>Reserved (zero).</p></td>
+          <td colspan="4" bgcolor="#DDDDDD">
+          <em>No specific indexing information</em></td>
 	</tr>
+
       </table>
     </div>
 
     <br />
-    <br />
+<li>
+    <a name="IndexInfoFixed">
+    Index-specific information for <i>Fixed Array</i>:
+</li>
+
     <div align="center">
       <table class="format">
-        <caption>
-          Variable-Length Property Description
-        </caption>
+    <caption>
+        Layout: Fixed Array Indexing Information
+    </caption>
 
-        <tr>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-        </tr>
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
 
-        <tr>
-          <td colspan="4"><br />Base Type<br /><br /></td>
-        </tr>
+	<tr>
+	  <td colspan="1">Page Bits</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
 
       </table>
     </div>
@@ -10362,246 +14125,258 @@ IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Fixed Array Indexing Information
+    </caption>
 	<tr>
-          <th width="10%">Field Name</th>
+          <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Base Type</p></td>
-	  <td>
-            <p>Each variable-length type is based on some parent type.  The
-                information for that parent type is described recursively by
-                this field.
-            </p>
-          </td>
+	  <td><p>Page Bits</p></td>
+	  <td><p>This field contains the number of bits needed to store the
+	    maximum number of elements in a data block page.</p></td>
 	</tr>
 
       </table>
     </div>
-    
-
-    <br />
-    <p>Class specific information for Array (Class 10):</p>
-
-    <p>There are no bit fields defined for the array class.
     </p>
 
-    <p>Note that the dimension information defined in the property for this
-      datatype class is independent of dataspace information for a dataset.
-      The dimension information here describes the dimensionality of the
-      information within a data element (or a component of an element, if the
-      array datatype is nested within another datatype) and the dataspace for a
-      dataset describes the size and locations of the elements in a dataset.
-    </p>
+    <br />
+<li>
+    <a name="IndexInfoExtensible">
+    Index-specific information for <i>Extensible Array</i>:
+</li>
 
-    
     <div align="center">
       <table class="format">
-        <caption>
-          Array Property Description for Datatype Version 2
-        </caption>
+    <caption>
+        Layout: Extensible Array Indexing Information
+    </caption>
 
-        <tr>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-        </tr>
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
 
 	<tr>
-	  <td>Dimensionality</td>
-	  <td colspan="3">Reserved (zero)</td>
+	  <td>Max Bits</td>
+	  <td>Index Elements</td>
+	  <td>Min Pointers</td>
+	  <td>Min Elements</td>
 	</tr>
 
+	  <td colspan="2">Page Bits</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Extensible Array Indexing Information
+    </caption>
 	<tr>
-	  <td colspan="4">Dimension #1 Size</td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
+
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td><p>Max Bits</p></td>
+	  <td><p>This field contains the number of bits needed to store the maximum number of elements
+                in the array.
+              </p>
+          </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Dimension #n Size</td>
+	  <td><p>Index Elements</p></td>
+	  <td><p>This field contains the number of elements to store in the
+                index block.
+              </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Permutation Index #1</td>
+	  <td><p>Min Pointers</p></td>
+	  <td><p>This field contains the minimum number of data block pointers
+                for a superblock.
+              </p>
+          </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td><p>Min Elements</p></td>
+	  <td><p>This field contains the minimum number of elements per data block.
+              </p>
+          </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Permutation Index #n</td>
+	  <td><p>Page Bits</p></td>
+	  <td><p>This field contains the number of bits needed to store the
+	    maximum number of elements in a data block page.
+              </p>
+          </td>
 	</tr>
 
-        <tr>
-          <td colspan="4"><br />Base Type<br /><br /></td>
-        </tr>
+      </table>
+    </div>
+    </p>
+    <br />
+    
+<li>
+    <a name="IndexInfoV2Btrees">
+    Index-specific information for <i>Version 2 B-tree</i>:
+</li>
+
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Version 2 B-tree Indexing Information
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>
 
+	<tr>
+	  <td colspan="4">Node Size</td>
+	</tr>
+	
+	<tr>
+	  <td>Split Percent</td>
+	  <td>Merge Percent</td>
+          <td colspan="2" bgcolor="#DDDDDD">
+          <em>This space inserted only to align table nicely</em></td>
+	</tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Version 2 B-tree Indexing Information
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
-	  <td>
-            <p>This value is the number of dimensions that the array has.
-            </p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Dimension #n Size</p></td>
-	  <td>
-            <p>This value is the size of the dimension of the array
-	    as stored in the file.  The first dimension stored in
-	    the list of dimensions is the slowest changing dimension
-	    and the last dimension stored is the fastest changing
-	    dimension.
-            </p>
+	  <td><p>Node Size</p></td>
+	  <td><p>This field is the size in bytes of a B-tree node.
+              </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Permutation Index #n</p></td>
-	  <td>
-            <p>This value is the index permutation used to map 
-            each dimension from the canonical representation to an 
-            alternate axis for each dimension. Currently, dimension 
-            permutations are not supported, and these indices should 
-            be set to the index position minus one. In other words, 
-            the first dimension should be set to 0, the second dimension 
-            should be set to 1, and so on.
-            </p>
-          </td>
+	  <td><p>Split Percent</p></td>
+	  <td><p>This field is the percentage full of a B-tree node at which to split the node.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Base Type</p></td>
-	  <td>
-            <p>Each array type is based on some parent type.  The
-                information for that parent type is described recursively by
-                this field.
-            </p>
-          </td>
+	  <td><p>Merge Percent</p></td>
+	  <td><p>This field is the percentage full of a B-tree node at which to merge the node.</p></td>
 	</tr>
-
       </table>
     </div>
+    </ol>
+
+
 
     <br />
+    <a name="VirtualStorage"></a>
+    <p>
+    Class-specific information for virtual storage (layout class 3):</p>
+   
     <div align="center">
       <table class="format">
-        <caption>
-          Array Property Description for Datatype Version 3
-        </caption>
-
-        <tr>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-          <th width="25%">Byte</th>
-        </tr>
+    <caption>
+        Layout: Virtual Storage Property Description
+    </caption>
 
 	<tr>
-	  <td>Dimensionality</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension #1 Size</td>
-	</tr>
-	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Dimension #n Size</td>
+	  <td colspan="4">Index</td>
 	</tr>
 
-        <tr>
-          <td colspan="4"><br />Base Type<br /><br /></td>
-        </tr>
+      </table>
 
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Virtual Storage Property Description
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
-	  <td>
-            <p>This value is the number of dimensions that the array has.
-            </p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Dimension #n Size</p></td>
-	  <td>
-            <p>This value is the size of the dimension of the array
-	    as stored in the file.  The first dimension stored in
-	    the list of dimensions is the slowest changing dimension
-	    and the last dimension stored is the fastest changing
-	    dimension.
-            </p>
-          </td>
+	  <td><p>Address</p></td>
+	  <td><p>This is the address of the global heap collection where
+            the VDS mapping entries are stored.
+	    See <a href="#GlobalHeapVDS">“Disk Format: Level 1F - 
+        Global Heap Block for Virtual Datasets.”</a>
+	    </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Base Type</p></td>
-	  <td>
-            <p>Each array type is based on some parent type.  The
-                information for that parent type is described recursively by
-                this field.
-            </p>
+	  <td><p>Index</p></td>
+	  <td><p>This is the index of the data object within the global heap collection.
+              </p>
           </td>
 	</tr>
-
       </table>
     </div>
 
-    
-
-<br />
-<h4><a name="OldFillValueMessage">IV.A.2.e. The Data Storage - 
-Fill Value (Old) Message</a></h4>
+<h4><a name="BogusMessage">IV.A.2.j. The Bogus Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Fill Value 
-      (old)</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0004</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td><p>The fill value message stores a single data value which 
-      is returned to the application when an uninitialized data element 
-      is read from a dataset. The fill value is interpreted with the 
-      same datatype as the dataset. If no fill value message is present 
-      then a fill value of all zero bytes is assumed.</p>
-      <p>This fill value message is deprecated in favor of the 
-      “new” fill value message (Message Type 0x0005) and 
-      is only written to the file for forward compatibility with 
-      versions of the HDF5 Library before the 1.6.0 version. 
-      Additionally, it only appears for datasets with a user-defined 
-      fill value (as opposed to the library default fill value or an 
-      explicitly set “undefined” fill value).</p>
-      </td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Bogus</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0009</td></tr>
+    <tr><td colspan="2"><b>Length:</b> 4 bytes</td></tr>
+    <tr><td colspan="2"><b>Status:</b> For testing only; should never 
+      be stored in a valid file.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>This message is used for testing the HDF5 Library’s 
+      response to an “unknown” message type and should 
+      never be encountered in a valid HDF5 file.</td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -10609,9 +14384,9 @@ Fill Value (Old) Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Fill Value Message (Old)
-	</caption>
+    <caption>
+        Layout: Bogus Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -10621,11 +14396,7 @@ Fill Value (Old) Message</a></h4>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Size</td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
+	  <td colspan="4">Bogus Value</td>
 	</tr>
       </table>
     </div>
@@ -10633,49 +14404,43 @@ Fill Value (Old) Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Bogus Message
+    </caption>
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
-
-	<tr>
-	  <td><p>Size</p></td>
-	  <td>
-            <p>This is the size of the Fill Value field in bytes.
-            </p>
-          </td>
+	  <th width="30%">Field Name</th>
+	  <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Fill Value</p></td>
+	  <td><p>Bogus Value</p></td>
 	  <td>
-            <p>The fill value.  The bytes of the fill value are interpreted
-                using the same datatype as for the dataset.
-            </p>
-          </td>
+	    <p>This value should always be: <code>0xdeadbeef</code>.</p>
+	  </td>
 	</tr>
       </table>
     </div>
     
-
-<br />
-<h4><a name="FillValueMessage">IV.A.2.f. The Data Storage - 
-Fill Value Message</a></h4>
+<h4><a name="GroupInfoMessage">IV.A.2.k. The Group Info Message
+</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Fill 
-      Value</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0005</td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Group Info</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000A</td></tr>
     <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Required for dataset objects; 
-      may not be repeated.</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
     <tr><td><b>Description:</b></td>
-      <td>The fill value message stores a single data value which is 
-      returned to the application when an uninitialized data element 
-      is read from a dataset. The fill value is interpreted with the 
-      same datatype as the dataset.</td></tr>
+      <td><p>This message stores information for the constants defining 
+      a “new style” group’s behavior. Constant 
+      information will be stored in this message and variable 
+      information will be stored in the 
+      <a href="#LinkInfoMessage">Link Info</a> message.</p>
+      <p>Note: the “estimated entry” information below is 
+      used when determining the size of the object header for the 
+      group when it is created.</p></td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -10683,9 +14448,9 @@ Fill Value Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Fill Value Message - Versions 1 & 2
-	</caption>
+    <caption>
+        Layout: Group Info Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -10696,24 +14461,27 @@ Fill Value Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Space Allocation Time</td>
-	  <td>Fill Value Write Time</td>
-	  <td>Fill Value Defined</td>
+	  <td>Flags</td>
+	  <td colspan="2">Link Phase Change: Maximum Compact Value <em>(optional)</em></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4">Size <em>(optional)</em></td>
+	  <td colspan="2">Link Phase Change: Minimum Dense Value <em>(optional)</em></td>
+	  <td colspan="2">Estimated Number of Entries <em>(optional)</em></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
+	  <td colspan="2">Estimated Link Name Length of Entries <em>(optional)</em></td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
+
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Group Info Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -10721,188 +14489,203 @@ Fill Value Message</a></h4>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td>
-            <p>The version number information is used for changes in the
-                format of the fill value message and is described here:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Version</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
+	  <td><p>The version number for this message. This document describes version 0.</p>
+	  </td>
+	</tr>
 
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>Never used
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>Initial version of this message.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>In this version, the Size and Fill Value fields are
-                        only present if the Fill Value Defined field is set
-                        to 1.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>This version packs the other fields in the message
-                        more efficiently than version 2.
-                      </td>
-                    </tr>
-                </table></p>
-            </p>
+	<tr>
+	<td><p>Flags</p></td>
+	  <td><p>This is the group information flag with the following definition:
+	      
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>If set, link phase change values are stored.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>If set, the estimated entry information is non-default
+                    and is stored.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>2-7</code></td>
+                  <td>Reserved</td>
+                </tr>
+	    </table></p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Space Allocation Time</p></td>
-	  <td>
-            <p>When the storage space for the dataset’s raw data will be
-                allocated.  The allowed values are:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Value</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
+	  <td><p>Link Phase Change: Maximum Compact Value</p></td>
+	  <td><p>The is the maximum number of links to store “compactly” (in
+                the group’s object header).</p>
+	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
+	  </td>
+	</tr>
 
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>Not used.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>Early allocation.  Storage space for the entire dataset
-                        should be allocated in the file when the dataset is
-                        created.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>Late allocation.  Storage space for the entire dataset
-                        should not be allocated until the dataset is written
-                        to.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>Incremental allocation.  Storage space for the
-                        dataset should not be allocated until the portion
-                        of the dataset is written to.  This is currently
-                        used in conjunction with chunked data storage for
-                        datasets.
-                      </td>
-                    </tr>
-                </table></p>
-            
-          </td>
+	<tr>
+	  <td><p>Link Phase Change: Minimum Dense Value</p></td>
+	  <td><p>This is the minimum number of links to store “densely” (in
+                the group’s fractal heap).  The fractal heap’s address is
+                located in the <a href="#LinkInfoMessage">Link Info</a>
+                message.</p>
+	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Estimated Number of Entries</p></td>
+	  <td><p>This is the estimated number of entries in groups.</p>
+	      <p>If this field is not present, the default value of <code>4</code>
+                will be used for the estimated number of group entries.</p>
+	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Estimated Link Name Length of Entries</p></td>
+	  <td><p>This is the estimated length of entry name.</p>
+	      <p>If this field is not present, the default value of <code>8</code>
+                will be used for the estimated link name length of group entries.</p>
+	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
+	  </td>
+	</tr>
+
+      </table>
+    </div>
+<!--    </p> -->
+    
+<h4><a name="FilterMessage">IV.A.2.l. The Data Storage - Filter 
+Pipeline Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> 
+      Data Storage - Filter Pipeline</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000B</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td><p>This message describes the filter pipeline which should 
+      be applied to the data stream by providing filter identification 
+      numbers, flags, a name, and client data.</p>
+      <p>This message may be present in the object headers of both 
+      dataset and group objects. For datasets, it specifies the 
+      filters to apply to raw data. For groups, it specifies the 
+      filters to apply to the group’s fractal heap. Currently, 
+      only datasets using chunked data storage use the filter 
+      pipeline on their raw data.</p></td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Filter Pipeline Message - Version 1
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>  
+
+	<tr>
+	  <td>Version</td>
+	  <td>Number of Filters</td>
+	  <td colspan="2">Reserved (zero)</td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Reserved (zero)</td>
 	</tr>
 
 	<tr>
-	  <td><p>Fill Value Write Time</p></td>
-	  <td>
-            <p>At the time that storage space for the dataset’s raw data is
-                allocated, this value indicates whether the fill value should
-                be written to the raw data storage elements.  The allowed values
-                are:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Value</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
+	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
+	</tr>
+      </table>
+    </div>
 
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>On allocation.  The fill value is always written to
-                        the raw data storage when the storage space is allocated.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>Never.  The fill value should never be written to
-                        the raw data storage.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>Fill value written if set by user.  The fill value
-                        will be written to the raw data storage when the storage
-                        space is allocated only if the user explicitly set
-                        the fill value.  If the fill value is the library
-                        default or is undefined, it will not be written to
-                        the raw data storage.
-                      </td>
-                    </tr>
-                </table></p>
-            
-          </td>
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Filter Pipeline Message - Version 1
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Fill Value Defined</p></td>
-	  <td>
-            <p>This value indicates if a fill value is defined for this
-                dataset.  If this value is 0, the fill value is undefined.
-                If this value is 1, a fill value is defined for this dataset.
-                For version 2 or later of the fill value message, this value
-                controls the presence of the Size and Fill Value fields.
-            </p>
-          </td>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for this message.  This table
+	    describes version 1.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Size</p></td>
-	  <td>
-            <p>This is the size of the Fill Value field in bytes.  This field
-                is not present if the Version field is greater than 1, 
-                and the Fill Value Defined field is set to 0.
-            </p>
-          </td>
+	  <td><p>Number of Filters</p></td>
+	  <td><p>The total number of filters described in this
+	    message. The maximum possible number of filters in a
+	    message is 32.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Fill Value</p></td>
-	  <td>
-            <p>The fill value.  The bytes of the fill value are interpreted
-                using the same datatype as for the dataset.  This field is
-                not present if the Version field is greater than 1, 
-                and the Fill Value Defined field is set to 0.
-            </p>
-          </td>
+	  <td><p>Filter Description List</p></td>
+	  <td><p>A description of each filter.  A filter description
+	    appears in the next table.</p></td>
 	</tr>
       </table>
     </div>
 
     <br />
+    <br />
+    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  Fill Value Message - Version 3
-	</caption>
+    <caption>
+        Layout: Filter Description - Version 1
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
+	</tr>  
+
+	<tr>
+	  <td colspan="2">Filter Identification Value</td>
+	  <td colspan="2">Name Length</td>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Flags</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td colspan="2">Flags</td>
+	  <td colspan="2">Number Client Data Values</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Size <em>(optional)</em></td>
+	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Padding <em>(variable size, optional)</em></td>
 	</tr>
       </table>
     </div>
@@ -10910,465 +14693,466 @@ Fill Value Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Filter Description - Version 1
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Version</p></td>
+	  <td><p>Filter Identification Value</p></td>
 	  <td>
-            <p>The version number information is used for changes in the
-                format of the fill value message and is described here:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Version</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>Never used
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>Initial version of this message.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>In this version, the Size and Fill Value fields are
-                        only present if the Fill Value Defined field is set
-                        to 1.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>This version packs the other fields in the message
-                        more efficiently than version 2.
-                      </td>
-                    </tr>
-                </table></p>
+            <p>
+            This value, often referred to as a filter identifier,
+            is designed to be a unique identifier for the filter. 
+            Values from zero through 32,767 are reserved for filters 
+            supported by The HDF Group in the HDF5 Library and for 
+            filters requested and supported by third parties. 
+            Filters supported by The HDF Group are documented immediately
+            below.  Information on 3rd-party filters can be found at 
+            The HDF Group’s 
+            <a href="http://www.hdfgroup.org/services/contributions.html">
+            Contributions</a> page.</p>
             
-          </td>
-	</tr>
+            <p>
+            To request a filter identifier, please contact 
+            The HDF Group’s Help Desk at
+            <img src="Graphics/help.png" valign="middle" height="14"
+            alt="The HDF Group Help Desk">.
+            You will be asked to provide the following information:</p>
+            <ol>
+              <li>Contact information for the developer requesting the
+                  new identifier</li> 
+              <li>A short description of the new filter</li> 
+              <li>Links to any relevant information, including licensing 
+                  information</li> 
+            </ol>
+            <p>
+            Values from 32768 to 65535 are reserved for non-distributed uses 
+            (for example, internal company usage) or for application usage 
+            when testing a feature. The HDF Group does not track or document 
+            the use of the filters with identifiers from this range.</p>
 
-	<tr>
-	  <td><p>Flags</p></td>
-	  <td>
-            <p>When the storage space for the dataset’s raw data will be
-                allocated.  The allowed values are:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Bits</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
+            <p>
+            The filters currently in library version 1.8.0 are 
+	    listed below:
+        
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Identification</th>
+		<th width="15%" align="left">Name</th>
+		<th width="65%" align="left">Description</th>
+	      </tr>
 
-                    <tr>
-                      <td align="center"><code>0-1</code></td>
-                      <td>Space Allocation Time, with the same
-                        values as versions 1 and 2 of the message.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2-3</code></td>
-                      <td>Fill Value Write Time, with the same
-                        values as versions 1 and 2 of the message.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>4</code></td>
-                      <td>Fill Value Undefined, indicating that the fill
-                        value has been marked as “undefined” for this dataset.
-                        Bits 4 and 5 cannot both be set.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>5</code></td>
-                      <td>Fill Value Defined, with the same values as
-                        versions 1 and 2 of the message.
-                        Bits 4 and 5 cannot both be set.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>6-7</code></td>
-                      <td>Reserved (zero).
-                      </td>
-                    </tr>
-                </table></p>
-            
-          </td>
-	</tr>
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>N/A</td>
+		<td>Reserved</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>deflate</td>
+		<td>GZIP deflate compression</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>2</code></td>
+		<td>shuffle</td>
+		<td>Data element shuffling</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>3</code></td>
+		<td>fletcher32</td>
+		<td>Fletcher32 checksum</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>4</code></td>
+		<td>szip</td>
+		<td>SZIP compression</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>5</code></td>
+		<td>nbit</td>
+		<td>N-bit packing</td>
+	      </tr>
 
-	<tr>
-	  <td><p>Size</p></td>
-	  <td>
-            <p>This is the size of the Fill Value field in bytes.  This field
-                is not present if the Version field is greater than 1, 
-                and the Fill Value Defined flag is set to 0.
-            </p>
-          </td>
+	      <tr>
+		<td align="center"><code>6</code></td>
+		<td>scaleoffset</td>
+		<td>Scale and offset encoded values</td>
+	      </tr>
+	    </table>
+        </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Fill Value</p></td>
-	  <td>
-            <p>The fill value.  The bytes of the fill value are interpreted
-                using the same datatype as for the dataset.  This field is
-                not present if the Version field is greater than 1, 
-                and the Fill Value Defined flag is set to 0.
-            </p>
-          </td>
+	  <td><p>Name Length</p></td>
+	  <td><p>Each filter has an optional null-terminated ASCII name
+	    and this field holds the length of the name including the
+	    null termination padded with nulls to be a multiple of
+	    eight. If the filter has no name then a value of zero is
+	    stored in this field.</p></td>
 	</tr>
-      </table>
-    </div>
-    
 
-<br />
-<h4><a name="LinkMessage">IV.A.2.g. The Link Message</a></h4>
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td><p>The flags indicate certain properties for a filter.  The 
+	    bit values defined so far are:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Bit</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Link</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0006</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may be 
-      repeated. </td></tr>
-    <tr><td><b>Description:</b></td>
-    <td><p>This message encodes the information for a link in a 
-      group’s object header, when the group is storing its links 
-      “compactly”, or in the group’s fractal heap, 
-      when the group is storing its links “densely”.</p>
-      <p>A group is storing its links compactly when the fractal heap 
-      address in the <em><a href="#LinkInfoMessage">Link Info 
-      Message</a></em> is set to the “undefined address” 
-      value.</p></td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Link Message
-	</caption>
+	      <tr>
+		<td align="center"><code>0</code></td>
+	        <td>If set then the filter is an optional filter.
+		During output, if an optional filter fails it will be
+		silently skipped in the pipeline.</td>
+	      </tr>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	      <tr>
+		<td align="center"><code>1-15</code></td>
+	        <td>Reserved (zero)</td>
+	      </tr>
+	    </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Flags</td>
-	  <td>Link type <em>(optional)</em></td>
-          <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-	<tr>
-	  <td colspan="4"><br />Creation Order <em>(8 bytes, optional)</em><br /><br /></td>
+	  <td><p>Number of Client Data Values</p></td>
+	  <td><p>Each filter can store integer values to control
+	    how the filter operates.  The number of entries in the
+	    <em>Client Data</em> array is stored in this field.</p></td>
 	</tr>
+
 	<tr>
-	  <td>Link Name Character Set <em>(optional)</em></td>
-	  <td>Length of Link Name (variable size)</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td><p>Name</p></td>
+	  <td><p>If the <em>Name Length</em> field is non-zero then it will 
+      contain the size of this field, padded to a multiple of eight. This 
+      field contains a null-terminated, ASCII character string to serve 
+      as a comment/name for the filter.</p></td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Link Name (variable size)</td>
+	  <td><p>Client Data</p></td>
+	  <td><p>This is an array of four-byte integers which will be
+	    passed to the filter function.  The <em>Client Data Number</em> of
+	    Values determines the number of elements in the array.</p></td>
 	</tr>
+
 	<tr>
-	  <td colspan="4"><br />Link Information (variable size)<br /><br /></td>
+	  <td><p>Padding</p></td>
+	  <td><p>Four bytes of zeroes are added to the message at this
+	    point if the Client Data Number of Values field contains
+	    an odd number.</p></td>
 	</tr>
-    </table>
+      </table>
     </div>
 
     <br />
+    <br />
+    <br />
     <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
+      <table class="format">
+    <caption>
+        Layout: Filter Pipeline Message - Version 2
+    </caption>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes version 1.</p>
-	  </td>
-	</tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>  
 
 	<tr>
-	<td><p>Flags</p></td>
-	  <td><p>This field contains information about the link and controls
-                the presence of other fields below.
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Bits</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>0-1</code></td>
-                      <td>Determines the size of the <em>Length of Link Name</em>
-                        field.
-                        <table class="list">
-                            <tr>
-                              <th width="20%" align="center">Value</th>
-                              <th width="80%" align="left">Description</th>
-                            </tr>
-
-                            <tr>
-                              <td align="center"><code>0</code></td>
-                              <td>The size of the <em>Length of Link Name</em>
-                                field is 1 byte.
-                              </td>
-                            </tr>
-                            <tr>
-                              <td align="center"><code>1</code></td>
-                              <td>The size of the <em>Length of Link Name</em>
-                                field is 2 bytes.
-                              </td>
-                            </tr>
-                            <tr>
-                              <td align="center"><code>2</code></td>
-                              <td>The size of the <em>Length of Link Name</em>
-                                field is 4 bytes.
-                              </td>
-                            </tr>
-                            <tr>
-                              <td align="center"><code>3</code></td>
-                              <td>The size of the <em>Length of Link Name</em>
-                                field is 8 bytes.
-                              </td>
-                            </tr>
-                        </table>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2</code></td>
-                      <td>Creation Order Field Present: if set, the <em>Creation
-                        Order</em> field is present.  If not set, creation order
-                        information is not stored for links in this group.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>3</code></td>
-                      <td>Link Type Field Present: if set, the link is not
-                        a hard link and the <em>Link Type</em> field is present.
-                        If not set, the link is a hard link.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>4</code></td>
-                      <td>Link Name Character Set Field Present: if set, the
-                        link name is not represented with the ASCII character
-                        set and the <em>Link Name Character Set</em> field is
-                        present.  If not set, the link name is represented with
-                        the ASCII character set.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>5-7</code></td>
-                      <td>Reserved (zero).
-                      </td>
-                    </tr>
-                </table></p>
-          
-          </td>
+	  <td>Version</td>
+	  <td>Number of Filters</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Link type</p></td>
-	  <td><p>This is the link class type and can be one of the following
-                values:
-                <table class="list">
-                    <tr>
-                      <th width="20%" align="center">Value</th>
-                      <th width="80%" align="left">Description</th>
-                    </tr>
-
-                    <tr>
-                      <td align="center"><code>0</code></td>
-                      <td>A hard link (should never be stored in the file)
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>1</code></td>
-                      <td>A soft link.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>2-63</code></td>
-                      <td>Reserved for future HDF5 internal use.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>64</code></td>
-                      <td>An external link.
-                      </td>
-                    </tr>
-                    <tr>
-                      <td align="center"><code>65-255</code></td>
-                      <td>Reserved, but available for user-defined link types.
-                      </td>
-                    </tr>
-                </table></p>
-            
-	    <p>This field is present if bit 3 of <em>Flags</em> is set.</p>
-	  </td>
+	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
 	</tr>
+      </table>
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Filter Pipeline Message - Version 2
+    </caption>
 	<tr>
-	  <td><p>Creation Order</p></td>
-	  <td><p>This 64-bit value is an index of the link’s creation time within
-            the group.  Values start at 0 when the group is created an increment
-            by one for each link added to the group.  Removing a link from a
-            group does not change existing links’ creation order field.
-            </p>
-	    <p>This field is present if bit 2 of <em>Flags</em> is set.</p>
-	  </td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Link Name Character Set</p></td>
-	  <td><p>This is the character set for encoding the link’s name:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for this message.  This table
+	    describes version 2.</p></td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>ASCII character set encoding (this should never be stored
-                    in the file)
-                  </td>
-                </tr>
+	<tr>
+	  <td><p>Number of Filters</p></td>
+	  <td><p>The total number of filters described in this
+	    message. The maximum possible number of filters in a
+	    message is 32.</p></td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>UTF-8 character set encoding
-                  </td>
-                </tr>
-            </table></p>
-            
-	    <p>This field is present if bit 4 of <em>Flags</em> is set.</p>
-	  </td>
+	<tr>
+	  <td><p>Filter Description List</p></td>
+	  <td><p>A description of each filter.  A filter description
+	    appears in the next table.</p></td>
 	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Filter Description - Version 2
+    </caption>
 
 	<tr>
-	  <td><p>Length of link name</p></td>
-	  <td><p>This is the length of the link’s name.  The size of this field 
-	    depends on bits 0 and 1 of <em>Flags</em>.</p>
-	  </td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	</tr>  
+
+	<tr>
+	  <td colspan="2">Filter Identification Value</td>
+	  <td colspan="2">Name Length <em>(optional)</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Link name</p></td>
-	  <td><p>This is the name of the link, non-NULL terminated.</p>
-	  </td>
+	  <td colspan="2">Flags</td>
+	  <td colspan="2">Number Client Data Values</td>
 	</tr>
 
 	<tr>
-	  <td><p>Link information</p></td>
-	  <td><p>The format of this field depends on the <em>link type</em>.</p>
-            <p>For <b>hard</b> links, the field is formatted as follows:
-            
-            <table class="list">
-                <tr>
-                  <td width="20%"><i>Size of Offsets</i> bytes:</td>
-                  <td width="80%">The address of the object header for the object that the
-                    link points to.
-                  </td>
-                </tr>
-            </table>
-            </p>
+	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Filter Description - Version 2
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
+	<tr>
+	  <td><p>Filter Identification Value</p></td>
+	  <td>
             <p>
-            For <b>soft</b> links, the field is formatted as follows:
+            This value, often referred to as a filter identifier,
+            is designed to be a unique identifier for the filter. 
+            Values from zero through 32,767 are reserved for filters 
+            supported by The HDF Group in the HDF5 Library and for 
+            filters requested and supported by third parties. 
+            Filters supported by The HDF Group are documented immediately
+            below.  Information on 3rd-party filters can be found at 
+            The HDF Group’s 
+            <a href="http://www.hdfgroup.org/services/contributions.html">
+            Contributions</a> page.</p>
             
-            <table class="list">
-                <tr>
-                  <td width="20%">Bytes 1-2:</td>
-                  <td width="80%">Length of soft link value.</td>
-                </tr>
-                <tr>
-                  <td><em>Length of soft link value</em> bytes:</td>
-                  <td>A non-NULL-terminated string storing the value of the
-                    soft link.
-                  </td>
-                </tr>
-            </table>
-            </p>
+            <p>
+            To request a filter identifier, please contact 
+            The HDF Group’s Help Desk at
+            <img src="Graphics/help.png" valign="middle" height="14"
+            alt="The HDF Group Help Desk">.
+            You will be asked to provide the following information:</p>
+            <ol>
+              <li>Contact information for the developer requesting the
+                  new identifier</li> 
+              <li>A short description of the new filter</li> 
+              <li>Links to any relevant information, including licensing 
+                  information</li> 
+            </ol>
+            <p>
+            Values from 32768 to 65535 are reserved for non-distributed uses 
+            (for example, internal company usage) or for application usage 
+            when testing a feature. The HDF Group does not track or document 
+            the use of the filters with identifiers from this range.</p>
 
             <p>
-            For <b>external</b> links, the field is formatted as follows:
-            
-            <table class="list">
-                <tr>
-                  <td width="20%">Bytes 1-2:</td>
-                  <td width="80%">Length of external link value.</td>
-                </tr>
-                <tr>
-                  <td><em>Length of external link value</em> bytes:</td>
-                  <td>The first byte contains the version number in the 
-                  upper 4 bits and flags in the lower 4 bits for the external 
-                  link. Both version and flags are defined to be zero in 
-                  this document. The remaining bytes consist of two 
-                  NULL-terminated strings, with no padding between them. 
-                  The first string is the name of the HDF5 file containing 
-                  the object linked to and the second string is the full path 
-                  to the object linked to, within the HDF5 file’s 
-                  group hierarchy.
-                  </td>
-                </tr>
-            </table>
+            The filters currently in library version 1.8.0 are 
+	    listed below:
+        
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Identification</th>
+		<th width="15%" align="left">Name</th>
+		<th width="65%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>N/A</td>
+		<td>Reserved</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>deflate</td>
+		<td>GZIP deflate compression</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>2</code></td>
+		<td>shuffle</td>
+		<td>Data element shuffling</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>3</code></td>
+		<td>fletcher32</td>
+		<td>Fletcher32 checksum</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>4</code></td>
+		<td>szip</td>
+		<td>SZIP compression</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>5</code></td>
+		<td>nbit</td>
+		<td>N-bit packing</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>6</code></td>
+		<td>scaleoffset</td>
+		<td>Scale and offset encoded values</td>
+	      </tr>
+	    </table>
+	  </p></td>
+	</tr>
+
+	<tr>
+	  <td><p>Name Length</p></td>
+	  <td><p>Each filter has an optional null-terminated ASCII name
+	    and this field holds the length of the name including the
+	    null termination padded with nulls to be a multiple of
+	    eight. If the filter has no name then a value of zero is
+	    stored in this field.</p>
+            <p>Filters with IDs less than 256 (in other words, filters 
+            that are defined in this format documentation) do not store 
+            the <em>Name Length</em> or <em>Name</em> fields.
             </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td><p>The flags indicate certain properties for a filter.  The 
+	    bit values defined so far are:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Bit</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>0</code></td>
+	        <td>If set then the filter is an optional filter.
+		During output, if an optional filter fails it will be
+		silently skipped in the pipeline.</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1-15</code></td>
+	        <td>Reserved (zero)</td>
+	      </tr>
+	    </table></p>
+	  </td>
+	</tr>
 
-            <p>
-            For <b>user-defined</b> links, the field is formatted as follows:
-            
-            <table class="list">
-                <tr>
-                  <td width="20%">Bytes 1-2:</td>
-                  <td width="80%">Length of user-defined data.</td>
-                </tr>
-                <tr>
-                  <td><em>Length of user-defined link value</em> bytes:</td>
-                  <td>The data supplied for the user-defined link type.</td>
-                </tr>
-            </table>
+	<tr>
+	  <td><p>Number of Client Data Values</p></td>
+	  <td><p>Each filter can store integer values to control
+	    how the filter operates.  The number of entries in the
+	    <em>Client Data</em> array is stored in this field.</p></td>
+	</tr>
+
+	<tr>
+	  <td><p>Name</p></td>
+	  <td><p>If the <em>Name Length</em> field is non-zero, then it will 
+      contain the size of this field, <em>not</em> padded to a multiple 
+      of eight. This field contains a <em>non-</em>null-terminated, 
+      ASCII character string to serve as a comment/name for the filter.
             </p>
+      <p>Filters that are defined in this format documentation 
+      such as deflate and shuffle do not store the <em>Name 
+      Length</em> or <em>Name</em> fields.
+      </p>
+          </td>
+	</tr>
 
+	<tr>
+	  <td><p>Client Data</p></td>
+	  <td><p>This is an array of four-byte integers which will be
+	    passed to the filter function.  The Client Data Number of
+	    Values</em> determines the number of elements in the array.</p>
           </td>
-        </tr>
+	</tr>
       </table>
     </div>
-
-<br />
-<h4><a name="ExternalFileListMessage">IV.A.2.h. The Data Storage - 
-External Data Files Message</a></h4>
+    
+<h4><a name="AttributeMessage">IV.A.2.m. The Attribute Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> External 
-      Data Files</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0007</td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Attribute</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000C</td></tr>
     <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+    <tr><td colspan="2"><b>Status:</b> Optional; may be 
       repeated.</td></tr>
     <tr><td><b>Description:</b></td>
-      <td>The external data storage message indicates that the data 
-      for an object is stored outside the HDF5 file. The filename of 
-      the object is stored as a Universal Resource Location (URL) of 
-      the actual filename containing the data. An external file list 
-      record also contains the byte offset of the start of the data 
-      within the file and the amount of space reserved in the file 
-      for that data.</td></tr>
+      <td><p>The <em>Attribute</em> message is used to store objects 
+      in the HDF5 file which are used as attributes, or 
+      “metadata” about the current object. An attribute 
+      is a small dataset; it has a name, a datatype, a dataspace, and 
+      raw data. Since attributes are stored in the object header, they 
+      should be relatively small (in other words, less than 64KB). 
+      They can be associated with any type of object which has an 
+      object header (groups, datasets, or committed (named) 
+      datatypes).</p>
+      <p>In 1.8.x versions of the library, attributes can be larger 
+      than 64KB. See the 
+      <a href="UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FAttributes%2FHDF5_Attributes.htm%3Frhtocid%3Dtoc8.2_1%23TOC_8_5_Special_Issuesbc-13">
+      “Special Issues”</a> section of the Attributes chapter 
+      in the <cite>HDF5 User’s Guide</cite> for more information.</p>
+      <p>Note: Attributes on an object must have unique names: 
+      the HDF5 Library currently enforces this by causing the 
+      creation of an attribute with a duplicate name to fail. 
+      Attributes on different objects may have the same name, 
+      however.</p></td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -11376,9 +15160,9 @@ External Data Files Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  External File List Message
-	</caption>
+    <caption>
+        Layout: Attribute Message (Version 1)
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -11389,449 +15173,300 @@ External Data Files Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td colspan="3">Reserved (zero)</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Allocated Slots</td>
-	  <td colspan="2">Used Slots</td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Heap Address<sup>O</sup><br /><br /></td>
+	  <td>Reserved (zero)</td>
+	  <td colspan="2">Name Size</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Slot Definitions...<br /><br /></td>
+	  <td colspan="2">Datatype Size</td>
+	  <td colspan="2">Dataspace Size</td>
 	</tr>
-      </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
-
-    </div>	
-
-    <br />
-    <div align="center">
-	<table class="desc">
-	  <tr>
-	    <th width="30%">Field Name</th>
-	    <th>Description</th>
-	  </tr>
-	
-	  <tr>
-	    <td><p>Version</p></td>
-	    <td>
-	      <p>The version number information is used for changes in the format of
-                External Data Storage Message and is described here:
-		 <table class="list">
-		     <tr>
-			<th width="20%" align="center">Version</th>
-			<th width="80%" align="left">Description</th>
-		     </tr>
-		     <tr>
-			<td align="center"><code>0</code></td>
-			<td>Never used.</td>
-		     </tr>
-		     <tr>
-			<td align="center"><code>1</code></td>
-			<td>The current version used by the library.</td>
-		     </tr>
-		  </table></p>
-	      
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td><p>Allocated Slots</p></td>
-	    <td>
-	      <p>The total number of slots allocated in the message.  Its value must be at least as
-		 large as the value contained in the Used Slots field. (The current library simply
-		 uses the number of Used Slots for this message)</p>
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td><p>Used Slots</p></td>
-	    <td>
-	      <p>The number of initial slots which contains valid information.</p>
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td><p>Heap Address</p></td>
-	    <td>
-	      <p>This is the address of a local heap which contains the names for the external 
-		 files (The local heap information can be found in Disk Format Level 1D in this
-		 document).  The name at offset zero in the heap is always the empty string.</p>
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td><p>Slot Definitions</p></td>
-	    <td>
-	      <p>The slot definitions are stored in order according to the array addresses they 
-		 represent.</p>
-	    </td>
-	  </tr>
-
-	</table>
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  External File List Slot 
-	</caption>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name Offset in Local Heap<sup>L</sup><br /><br /></td>
+	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Offset in External Data File<sup>L</sup><br /><br /></td>
+	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Data Size in External File<sup>L</sup><br /><br /></td>
+	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
 	</tr>
       </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
-      </table>
-
-    </div>	
+    </div>
 
     <br />
     <div align="center">
-	<table class="desc">
-	  <tr>
-	    <th width="30%">Field Name</th>
-	    <th>Description</th>
-	  </tr>
-	
-	  <tr>
-	    <td><p>Name Offset in Local Heap</p></td>
-	    <td>
-		<p>The byte offset within the local name heap for the name
-	    	of the file.  File names are stored as a URL which has a
-	    	protocol name, a host name, a port number, and a file
-	    	name:
-		<code><em>protocol</em>:<em>port</em>//<em>host</em>/<em>file</em></code>.
-		If the protocol is omitted then “file:” is assumed.  If
-		the port number is omitted then a default port for that
-		protocol is used.  If both the protocol and the port
-		number are omitted then the colon can also be omitted. If
-		the double slash and host name are omitted then
-		“localhost” is assumed.  The file name is the only
-		mandatory part, and if the leading slash is missing then
-		it is relative to the application’s current working
-		directory (the use of relative names is not
-		recommended).
-                </p>
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td><p>Offset in External Data File</p></td>
-	    <td>
-	  	<p>This is the byte offset to the start of the data in the
-	        specified file. For files that contain data for a single
-	        dataset this will usually be zero.</p>
-	    </td>
-	  </tr>
+      <table class="desc">
+    <caption>
+        Fields: Attribute Message (Version 1)
+    </caption>
+	<tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+	</tr>
 
-	  <tr>
-	    <td><p>Data Size in External File</p></td>
-	    <td>
-		<p>This is the total number of bytes reserved in the
-		specified file for raw data storage.  For a file that
-		contains exactly one complete dataset which is not
-		extendable, the size will usually be the exact size of the
-		dataset.  However, by making the size larger one allows
-		HDF5 to extend the dataset. The size can be set to a value
-		larger than the entire file since HDF5 will read zeroes
-		past the end of the file without failing.</p>
-	    </td>
-	  </tr>
-	</table>
-    </div>
-    
+	<tr>
+	  <td><p>Version</p></td>
+	  <td><p>The version number information is used for changes in the format of the 
+	    attribute message and is described here:
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Version</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
 
-<br />
-<h4><a name="LayoutMessage">IV.A.2.i. The Data Storage - Layout 
-Message</a></h4>
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>Never used.</td>
+	      </tr>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Data Storage - 
-      Layout</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0008</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Required for datasets; may not 
-      be repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>Data layout describes how the elements of a multi-dimensional 
-    array are stored in the HDF5 file. Three types of data layout 
-    are supported:
-      <ol>
-        <li>Contiguous: The array is stored in one contiguous area of 
-        the file. This layout requires that the size of the array be 
-        constant: data manipulations such as chunking, compression, 
-        checksums, or encryption are not permitted. The message stores 
-        the total storage size of the array. The offset of an element 
-        from the beginning of the storage area is computed as in a C 
-        array.</li>
-        <li>Chunked: The array domain is regularly decomposed into 
-        chunks, and each chunk is allocated and stored separately. This 
-        layout supports arbitrary element traversals, compression, 
-        encryption, and checksums. (these features are described 
-        in other messages). The message stores the size of a chunk 
-        instead of the size of the entire array; the storage size of 
-        the entire array can be calculated by traversing the B-tree 
-        that stores the chunk addresses.</li>
-        <li>Compact: The array is stored in one contiguous block, as 
-        part of this object header message.</li>
-      </ol></td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Data Layout Message (Versions 1 and 2)
-	</caption>
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>Used by the library before version 1.6 to encode attribute message.
+		    This version does not support shared datatypes.</td>
+	      </tr>
+	    </table></p>
+	  </td>
+	</tr>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	  <td><p>Name Size</p></td>
+	  <td><p>The length of the attribute name in bytes including the
+	    null terminator.  Note that the <em>Name</em> field below may
+	    contain additional padding not represented by this
+	    field.</p></td>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Dimensionality</td>
-	  <td>Layout Class</td>
-	  <td>Reserved <em>(zero)</em></td>
+	  <td><p>Datatype Size</p></td>
+	  <td><p>The length of the datatype description in the <em>Datatype</em>
+	    field below.  Note that the <em>Datatype</em> field may contain
+	    additional padding not represented by this field.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Reserved <em>(zero)</em></td>
+	  <td><p>Dataspace Size</p></td>
+	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
+	    field below.  Note that the <em>Dataspace</em> field may contain
+	    additional padding not represented by this field.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Data Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
+	  <td><p>Name</p></td>
+	  <td><p>The null-terminated attribute name.  This field is
+	    padded with additional null characters to make it a
+	    multiple of eight bytes.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension 0 Size</td>
+	  <td><p>Datatype</p></td>
+	  <td><p>The datatype description follows the same format as
+	    described for the datatype object header message.  This
+	    field is padded with additional zero bytes to make it a
+	    multiple of eight bytes.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension 1 Size</td>
+	  <td><p>Dataspace</p></td>
+	  <td><p>The dataspace description follows the same format as
+	    described for the dataspace object header message.  This
+	    field is padded with additional zero bytes to make it a
+	    multiple of eight bytes.</p></td>
 	</tr>
-	
+
 	<tr>
-	  <td colspan="4">...</td>
+	  <td><p>Data</p></td>
+	  <td><p>The raw data for the attribute.  The size is determined
+	    from the datatype and dataspace descriptions.  This
+	    field is <em>not</em> padded with additional bytes.</p></td>
+	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Attribute Message (Version 2)
+    </caption>
+
+	<tr align="center">
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension #n Size</td>
+	  <td>Version</td>
+	  <td>Flags</td>
+	  <td colspan="2">Name Size</td>
 	</tr>
-	
+
 	<tr>
-	  <td colspan="4">Dataset Element Size <em>(optional)</em></td>
+	  <td colspan="2">Datatype Size</td>
+	  <td colspan="2">Dataspace Size</td>
 	</tr>
-	
+
 	<tr>
-	  <td colspan="4">Compact Data Size <em>(optional)</em></td>
+	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
 	</tr>
-	
+
 	<tr>
-	  <td colspan="4"><br />Compact Data... <em>(variable size, optional)</em><br /><br /></td>
+	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
 	</tr>
-      </table>
 
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
+	<tr>
+	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
+	</tr>
 
+	<tr>
+	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
+	</tr>
+      </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Attribute Message (Version 2)
+    </caption>
 	<tr>
-	  <th width="30%">Field Name</th>
-	  <th>Description</th>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td>
-	    <p>The version number information is used for changes in the format of the data 
-	    layout message and is described here:
-	      <table class="list">
-		<tr>
-		  <th width="20%" align="center">Version</th>
-		  <th width="80%" align="left">Description</th>
-		</tr>
+	  <td><p>The version number information is used for changes in the
+                format of the attribute message and is described here:
+                <table class="list">
+                  <tr>
+                    <th width="20%" align="center">Version</th>
+                    <th width="80%" align="left">Description</th>
+                  </tr>
 
-		<tr>
-		  <td align="center"><code>0</code></td>
-		  <td>Never used.</td>
-		</tr>
+                  <tr>
+                    <td align="center"><code>2</code></td>
+                    <td>Used by the library of version 1.6.x and after to encode
+                        attribute messages.
+                        This version supports shared datatypes.  The fields of
+                        name, datatype, and dataspace are not padded with
+                        additional bytes of zero.
+                    </td>
+                  </tr>
+                </table></p>
+	  </td>
+	</tr>
 
-		<tr>
-		  <td align="center"><code>1</code></td>
-		  <td>Used by version 1.4 and before of the library to encode layout information.
-		      Data space is always allocated when the data set is created.</td>
-		</tr>
+	<tr>
+	  <td><p>Flags</p></td>
+	  <td><p>This bit field contains extra information about 
+                interpreting the attribute message:
+              
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Bit</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
 
-		<tr>
-		  <td align="center"><code>2</code></td>
-		  <td>Used by version 1.6.x of the library to encode layout information.
-		      Data space is allocated only when it is necessary.</td>
-		</tr>
-	      </table></p>
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>If set, datatype is shared.</td>
+	      </tr>
+
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>If set, dataspace is shared.</td>
+	      </tr>
+	    </table></p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
-	  <td><p>An array has a fixed dimensionality.  This field 
-	    specifies the number of dimension size fields later in the 
-	    message. The value stored for chunked storage is 1 greater than 
-        the number of dimensions in the dataset’s dataspace. 
-        For example, 2 is stored for a 1 dimensional dataset.
-            </p>
-          </td>
+	  <td><p>Name Size</p></td>
+	  <td><p>The length of the attribute name in bytes including the
+	    null terminator.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Layout Class</p></td>
-	  <td><p>The layout class specifies the type of storage for the data
-            and how the other fields of the layout message are to be
-            interpreted.
-            
-	      <table class="list">
-		<tr>
-		  <th width="20%" align="center">Value</th>
-		  <th width="80%" align="left">Description</th>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>0</code></td>
-		  <td>Compact Storage
-                  </td>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>1</code></td>
-		  <td>Contiguous Storage
-                  </td>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>2</code></td>
-		  <td>Chunked Storage
-                  </td>
-		</tr>
-	      </table>
-            </p>
-          </td>
+	  <td><p>Datatype Size</p></td>
+	  <td><p>The length of the datatype description in the <em>Datatype</em>
+	    field below.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Data Address</p></td>
-	  <td><p>For contiguous storage, this is the address of the raw
-	    data in the file.  For chunked storage this is the address
-	    of the v1 B-tree that is used to look up the addresses of the
-	    chunks.  This field is not present for compact storage.
-            If the version for this message is greater than 1, the address
-            may have the “undefined address” value, to indicate that
-            storage has not yet been allocated for this array.</p>
-          </td>
+	  <td><p>Dataspace Size</p></td>
+	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
+	    field below.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Size</p></td>
-	  <td><p>For contiguous and compact storage the dimensions define
-            the entire size of the array while for chunked storage they define
-            the size of a single chunk.  In all cases, they are in units of 
-            array elements (not bytes).  The first dimension stored in the list
-            of dimensions is the slowest changing dimension and the last
-            dimension stored is the fastest changing dimension.
-            </p>
-          </td>
+	  <td><p>Name</p></td>
+	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
+	    padded with additional bytes.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataset Element Size</p></td>
-	  <td><p>The size of a dataset element, in bytes.  This field is only
-            present for chunked storage.
+	  <td><p>Datatype</p></td>
+	  <td><p>The datatype description follows the same format as
+                described for the datatype object header message.
+            </p>
+            <p>If the
+                <em>Flag</em> field indicates this attribute’s datatype is
+                shared, this field will contain a “shared message” encoding
+                instead of the datatype encoding.
+            </p>
+            <p>This field is <em>not</em> padded with additional bytes.
             </p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Compact Data Size</p></td>
-	  <td><p>This field is only present for compact data storage.
-            It contains the size of the raw data for the dataset array, in
-            bytes.</p>
+	  <td><p>Dataspace</p></td>
+	  <td><p>The dataspace description follows the same format as
+                described for the dataspace object header message.
+            </p>
+            <p>If the
+                <em>Flag</em> field indicates this attribute’s dataspace is
+                shared, this field will contain a “shared message” encoding
+                instead of the dataspace encoding.
+            </p>
+            <p>This field is <em>not</em> padded with additional bytes.</p>
           </td>
-    </tr>
+	</tr>
 
 	<tr>
-	  <td><p>Compact Data</p></td>
-	  <td><p>This field is only present for compact data storage.
-            It contains the raw data for the dataset array.</p>
+	  <td><p>Data</p></td>
+	  <td><p>The raw data for the attribute.  The size is determined
+                from the datatype and dataspace descriptions.
+            </p>
+            <p>This field is <em>not</em> padded with additional zero bytes.
+            </p>
           </td>
 	</tr>
       </table>
     </div>
 
     <br />
-    <p>Version 3 of this message re-structured the format into specific
-        properties that are required for each layout class.</p>
-
-    
+    <br />
+    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  <b>Data Layout Message (Version 3)</b>
-	</caption>
+    <caption>
+        Layout: Attribute Message (Version 3)
+    </caption>
 
-	<tr>
+	<tr align="center">
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
@@ -11840,12 +15475,34 @@ Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Layout Class</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td>Flags</td>
+	  <td colspan="2">Name Size</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Properties <em>(variable size)</em><br /><br /></td>
+	  <td colspan="2">Datatype Size</td>
+	  <td colspan="2">Dataspace Size</td>
+	</tr>
+
+	<tr>
+	  <td>Name Character Set Encoding</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
 	</tr>
       </table>
     </div>
@@ -11853,137 +15510,176 @@ Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Attribute Message (Version 3)
+    </caption>
 	<tr>
-	  <th width="30%">Field Name</th>
-	  <th>Description</th>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td>
-	    <p>The version number information is used for changes in the format of layout message
-	       and is described here:
-	      <table class="list">	
-		<tr>
-		  <th width="20%" align="center">Version</th>
-		  <th width="80%" align="left">Description</th>
-		</tr>
+	  <td><p>The version number information is used for changes in the
+                format of the attribute message and is described here:
+                <table class="list">
+                  <tr>
+                    <th width="20%" align="center">Version</th>
+                    <th width="80%" align="left">Description</th>
+                  </tr>
 
-		<tr>
-		  <td align="center"><code>3</code></td>
-		  <td>Used by the version 1.6.3 and later of the library to store properties 
-		      for each layout class.</td>
-		</tr>
-	      </table></p>
+                  <tr>
+                    <td align="center"><code>3</code></td>
+                    <td>Used by the library of version 1.8.x and after to
+                        encode attribute messages.
+                        This version supports attributes with non-ASCII names.
+                    </td>
+                  </tr>
+                </table></p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Layout Class</p></td>
-	  <td><p>The layout class specifies the type of storage for the data
-            and how the other fields of the layout message are to be
-            interpreted.
-	      <table class="list">
-		<tr>
-		  <th width="20%" align="center">Value</th>
-		  <th width="80%" align="left">Description</th>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>0</code></td>
-		  <td>Compact Storage 
-                  </td>
-		</tr>
+	  <td><p>Flags</p></td>
+	  <td><p>This bit field contains extra information about 
+                interpreting the attribute message:
+              
+	    <table class="list">
+	      <tr>
+		<th width="20%" align="center">Bit</th>
+		<th width="80%" align="left">Description</th>
+	      </tr>
 
-		<tr>
-		  <td align="center"><code>1</code></td>
-		  <td>Contiguous Storage
-                  </td>
-		</tr>
+	      <tr>
+		<td align="center"><code>0</code></td>
+		<td>If set, datatype is shared.</td>
+	      </tr>
 
-		<tr>
-		  <td align="center"><code>2</code></td>
-		  <td>Chunked Storage
-                  </td>
-		</tr>
-	      </table>
-            </p>
-          </td>
+	      <tr>
+		<td align="center"><code>1</code></td>
+		<td>If set, dataspace is shared.</td>
+	      </tr>
+	    </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Properties</p></td>
-	  <td><p>This variable-sized field encodes information specific to each
-            layout class and is described below.  If there is no property
-            information specified for a layout class, the size of this field
-            is zero bytes.</p></td>
+	  <td><p>Name Size</p></td>
+	  <td><p>The length of the attribute name in bytes including the
+	    null terminator.</p></td>
 	</tr>
-      </table>
-    </div>
-
-    <br />
-    <p>Class-specific information for compact layout (Class 0):  (Note: The dimensionality information
-       is in the Dataspace message)</p>
 
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Compact Storage Property Description
-	</caption>
+	<tr>
+	  <td><p>Datatype Size</p></td>
+	  <td><p>The length of the datatype description in the <em>Datatype</em>
+	    field below.</p></td>
+	</tr>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	  <td><p>Dataspace Size</p></td>
+	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
+	    field below.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Size</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td><p>Name Character Set Encoding</p></td>
+	  <td><p>The character set encoding for the attribute’s name:
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Value</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>ASCII character set encoding
+                  </td>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>UTF-8 character set encoding
+                  </td>
+                </tr>
+            </table>
+            </p>
+          </td>
 	</tr>
-	
+
 	<tr>
-	  <td colspan="4"><br />Raw Data... <em>(variable size)</em><br /><br /></td>
+	  <td><p>Name</p></td>
+	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
+	    padded with additional bytes.</p></td>
 	</tr>
-      </table>
-    </div>
 
-    <br />
-    <div align="center">
-      <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <td><p>Datatype</p></td>
+	  <td><p>The datatype description follows the same format as
+                described for the datatype object header message.
+            </p>
+            <p>If the
+                <em>Flag</em> field indicates this attribute’s datatype is
+                shared, this field will contain a “shared message” encoding
+                instead of the datatype encoding.
+            </p>
+            <p>This field is <em>not</em> padded with additional bytes.
+            </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td><p>Size</p></td>
-	  <td><p>This field contains the size of the raw data for the dataset
-                array, in bytes.
-              </p>
+	  <td><p>Dataspace</p></td>
+	  <td><p>The dataspace description follows the same format as
+                described for the dataspace object header message.
+            </p>
+            <p>If the
+                <em>Flag</em> field indicates this attribute’s dataspace is
+                shared, this field will contain a “shared message” encoding
+                instead of the dataspace encoding.
+            </p>
+            <p>This field is <em>not</em> padded with additional bytes.</p>
           </td>
 	</tr>
 
 	<tr>
-	  <td><p>Raw Data</p></td>
-	  <td><p>This field contains the raw data for the dataset array.</p></td>
+	  <td><p>Data</p></td>
+	  <td><p>The raw data for the attribute.  The size is determined
+                from the datatype and dataspace descriptions.
+            </p>
+            <p>This field is <em>not</em> padded with additional zero bytes.
+            </p>
+          </td>
 	</tr>
       </table>
     </div>
     
+<h4><a name="CommentMessage">IV.A.2.n. The Object Comment 
+Message</a></h4>
 
-    <br />
-    <p>Class-specific information for contiguous layout (Class 1):  (Note: The dimensionality information
-       is in the Dataspace message)</p>
-
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Object 
+      Comment</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000D</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The object comment is designed to be a short description of 
+      an object. An object comment is a sequence of non-zero 
+      (<code>\0</code>) ASCII characters with no other formatting 
+      included by the library.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+    below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Contiguous Storage Property Description
-	</caption>
+    <caption>
+        Layout: Object Comment Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -11993,66 +15689,63 @@ Message</a></h4>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Size<sup>L</sup><br /><br /></td>
+	  <td colspan="4"><br />Comment <em>(variable size)</em><br /><br /></td>
 	</tr>
       </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-        <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
-      </table>
-
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Object Comment Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Address</p></td>
-	  <td><p>This is the address of the raw data in the file.
-            The address may have the “undefined address” value, to indicate
-            that storage has not yet been allocated for this array.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Size</p></td>
-	  <td><p>This field contains the size allocated to store the raw data,
-                in bytes.
-              </p>
-          </td>
+	  <td><p>Name</p></td>
+	  <td><p>A null terminated ASCII character string.</p></td>
 	</tr>
       </table>
     </div>
     
+<h4><a name="OldModificationTimeMessage">IV.A.2.o. The Object 
+Modification Time (Old) Message</a></h4>
 
-    <br />
-    <p>Class-specific information for chunked layout (Class 2):</p>
-
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Object 
+      Modification Time (Old)</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000E</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td><p>The object modification date and time is a timestamp 
+      which indicates (using ISO-8601 date and time format) the last 
+      modification of an object. The time is updated when any object 
+      header message changes according to the system clock where the 
+      change was posted. All fields of this message should be 
+      interpreted as coordinated universal time (UTC).</p>
+      <p>This modification time message is deprecated in favor of 
+      the “new” <a href="#ModificationTimeMessage">Object 
+      Modification Time</a> message and is no longer written to the 
+      file in versions of the HDF5 Library after the 1.6.0 
+      version.</p></td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Chunked Storage Property Description
-	</caption>
+    <caption>
+        Layout: Modification Time Message (Old)
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -12062,164 +15755,101 @@ Message</a></h4>
 	</tr>
 
 	<tr>
-	  <td>Dimensionality</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Dimension 0 Size</td>
+	  <td colspan="4">Year</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension 1 Size</td>
-	</tr>
-	
-	<tr>
-	  <td colspan="4">...</td>
+	  <td colspan="2">Month</td>
+	  <td colspan="2">Day of Month</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dimension #n Size</td>
+	  <td colspan="2">Hour</td>
+	  <td colspan="2">Minute</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Dataset Element Size</td>
+	  <td colspan="2">Second</td>
+	  <td colspan="2">Reserved</td>
 	</tr>
       </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
-
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Modification Time Message (Old)
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Dimensionality</p></td>
-	  <td><p>A chunk has a fixed dimensionality.  This field specifies 
-	    the number of dimension size fields later in the message.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Address</p></td>
-	  <td><p>This is the address of the v1 B-tree that is used to look up the
-            addresses of the chunks that actually store portions of the array
-            data.  The address may have the “undefined address” value, to
-            indicate that storage has not yet been allocated for this array.</p></td>
+	  <td><p>Year</p></td>
+	  <td><p>The four-digit year as an ASCII string. For example,
+	    <code>1998</code>.
+            </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Dimension #n Size</p></td>
-	  <td><p>These values define the dimension size of a single chunk, in
-            units of array elements (not bytes).  The first dimension stored in
-            the list of dimensions is the slowest changing dimension and the
-            last dimension stored is the fastest changing dimension.
-            </p>
-          </td>
+	  <td><p>Month</p></td>
+	  <td><p>The month number as a two digit ASCII string where
+	    January is <code>01</code> and December is <code>12</code>.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataset Element Size</p></td>
-	  <td><p>The size of a dataset element, in bytes.
-            </p>
-          </td>
+	  <td><p>Day of Month</p></td>
+	  <td><p>The day number within the month as a two digit ASCII
+	    string. The first day of the month is <code>01</code>.</p></td>
 	</tr>
-      </table>
-    </div>
-    
-<br />
-<h4><a name="BogusMessage">IV.A.2.j. The Bogus Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Bogus</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0009</td></tr>
-    <tr><td colspan="2"><b>Length:</b> 4 bytes</td></tr>
-    <tr><td colspan="2"><b>Status:</b> For testing only; should never 
-      be stored in a valid file.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>This message is used for testing the HDF5 Library’s 
-      response to an “unknown” message type and should 
-      never be encountered in a valid HDF5 file.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Bogus Message
-	</caption>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	  <td><p>Hour</p></td>
+	  <td><p>The hour of the day as a two digit ASCII string where
+	    midnight is <code>00</code> and 11:00pm is <code>23</code>.</p></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Bogus Value</td>
+	  <td><p>Minute</p></td>
+	  <td><p>The minute of the hour as a two digit ASCII string where
+	    the first minute of the hour is <code>00</code> and 
+	    the last is <code>59</code>.</p></td>
 	</tr>
-      </table>
-    </div>
 
-    <br />
-    <div align="center">
-      <table class="desc">
 	<tr>
-	  <th width="30%">Field Name</th>
-	  <th>Description</th>
+	  <td><p>Second</p></td>
+	  <td><p>The second of the minute as a two digit ASCII string
+	    where the first second of the minute is <code>00</code> 
+	    and the last is <code>59</code>.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Bogus Value</p></td>
-	  <td>
-	    <p>This value should always be: <code>0xdeadbeef</code>.</p>
-	  </td>
+	  <td><p>Reserved</p></td>
+	  <td><p>This field is reserved and should always be zero.</p></td>
 	</tr>
       </table>
     </div>
     
-<br />
-<h4><a name="GroupInfoMessage">IV.A.2.k. The Group Info Message
-</a></h4>
+<h4><a name="SOHMTableMessage">IV.A.2.p. The Shared Message Table 
+Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Group Info</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000A</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td><p>This message stores information for the constants defining 
-      a “new style” group’s behavior. Constant 
-      information will be stored in this message and variable 
-      information will be stored in the 
-      <a href="#LinkInfoMessage">Link Info</a> message.</p>
-      <p>Note: the “estimated entry” information below is 
-      used when determining the size of the object header for the 
-      group when it is created.</p></td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Shared Message 
+      Table</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x000F</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>This message is used to locate the table of shared object 
+      header message (SOHM) indexes. Each index consists of information 
+      to find the shared messages from either the heap or object header. 
+      This message is <em>only</em> found in the superblock 
+      extension.</td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -12227,9 +15857,9 @@ Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Group Info Message
-	</caption>
+    <caption>
+        Layout: Shared Message Table Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -12240,24 +15870,39 @@ Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Flags</td>
-	  <td colspan="2">Link Phase Change: Maximum Compact Value <em>(optional)</em></td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
+
 	<tr>
-	  <td colspan="2">Link Phase Change: Minimum Dense Value <em>(optional)</em></td>
-	  <td colspan="2">Estimated Number of Entries <em>(optional)</em></td>
+	  <td colspan="4"><br />Shared Object Header Message Table Address<sup>O</sup><br /><br /></td>
 	</tr>
+
 	<tr>
-	  <td colspan="2">Estimated Link Name Length of Entries <em>(optional)</em></td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td>Number of Indices</td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
       </table>
+
+      <table class="note">
+        <tr>
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Shared Message Table Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -12265,102 +15910,42 @@ Message</a></h4>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes version 0.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	<td><p>Flags</p></td>
-	  <td><p>This is the group information flag with the following definition:
-	      
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>If set, link phase change values are stored.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>If set, the estimated entry information is non-default
-                    and is stored.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2-7</code></td>
-                  <td>Reserved</td>
-                </tr>
-	    </table></p>
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Link Phase Change: Maximum Compact Value</p></td>
-	  <td><p>The is the maximum number of links to store “compactly” (in
-                the group’s object header).</p>
-	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Link Phase Change: Minimum Dense Value</p></td>
-	  <td><p>This is the minimum number of links to store “densely” (in
-                the group’s fractal heap).  The fractal heap’s address is
-                located in the <a href="#LinkInfoMessage">Link Info</a>
-                message.</p>
-	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
-	  </td>
+	  <td><p>The version number for this message.  This document describes version 0.</p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Estimated Number of Entries</p></td>
-	  <td><p>This is the estimated number of entries in groups.</p>
-	      <p>If this field is not present, the default value of <code>4</code>
-                will be used for the estimated number of group entries.</p>
-	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
+	  <td><p>Shared Object Header Message Table Address</p></td>
+	  <td><p>This field is the address of the master table for shared
+            object header message indexes.</p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Estimated Link Name Length of Entries</p></td>
-	  <td><p>This is the estimated length of entry name.</p>
-	      <p>If this field is not present, the default value of <code>8</code>
-                will be used for the estimated link name length of group entries.</p>
-	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
-	  </td>
+	  <td><p>Number of Indices</p></td>
+	  <td><p>This field is the number of indices in the master table.
+      </p></td>
 	</tr>
 
       </table>
     </div>
-    </p>
     
-<br />
-<h4><a name="FilterMessage">IV.A.2.l. The Data Storage - Filter 
-Pipeline Message</a></h4>
+<h4><a name="ContinuationMessage">IV.A.2.q. The Object Header 
+Continuation Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> 
-      Data Storage - Filter Pipeline</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000B</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+    <tr><td colspan="2"><b>Header Message Name:</b> Object Header 
+      Continuation</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0010</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may be 
       repeated.</td></tr>
     <tr><td><b>Description:</b></td>
-      <td><p>This message describes the filter pipeline which should 
-      be applied to the data stream by providing filter identification 
-      numbers, flags, a name, and client data.</p>
-      <p>This message may be present in the object headers of both 
-      dataset and group objects. For datasets, it specifies the 
-      filters to apply to raw data. For groups, it specifies the 
-      filters to apply to the group’s fractal heap. Currently, 
-      only datasets using chunked data storage use the filter 
-      pipeline on their raw data.</p></td></tr>
+      <td>The object header continuation is the location in the file 
+      of a block containing more header messages for the current data 
+      object. This can be used when header blocks become too large or 
+      are likely to change over time.</td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -12368,96 +15953,145 @@ Pipeline Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Filter Pipeline Message - Version 1
-	</caption>
+        <caption>
+            Layout: Object Header Continuation Message
+        </caption>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>  
+        <tr>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td>Number of Filters</td>
-	  <td colspan="2">Reserved (zero)</td>
-	</tr>
+        <tr>
+          <td colspan="4"><br />Offset<sup>O</sup><br /><br /></td>
+        </tr>
 
-	<tr>
-	  <td colspan="4">Reserved (zero)</td>
-	</tr>
+        <tr>
+          <td colspan="4"><br />Length<sup>L</sup><br /><br /></td>
+        </tr>
+      </table>
 
-	<tr>
-	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
-	</tr>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
-	<tr>
+        <caption>
+            Fields: Object Header Continuation Message
+        </caption>
+        <tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
+
+        <tr>
+          <td><p>Offset</p></td>
+          <td><p>This value is the address in the file where the
+              header continuation block is located.</p></td>
+        </tr>
+
+        <tr>
+          <td><p>Length</p></td>
+          <td><p>This value is the length in bytes of the header continuation
+              block in the file.</p></td>
+        </tr>
+      </table>
+    </div>
+    <br />
+
+    <p>The format of the header continuation block that this message points
+        to depends on the version of the object header that the message is
+        contained within.
+    </p>
+
+    <p>
+        Continuation blocks for version 1 object headers have no special
+        formatting information; they are merely a list of object header
+        message info sequences (type, size, flags, reserved bytes and data
+        for each message sequence).  See the description 
+	of <a href="#V1ObjectHeaderPrefix">Version 1 Data Object Header Prefix.</a>
+    </p>
+
+    <p>Continuation blocks for version 2 object headers <em>do</em> have
+        special formatting information as described here
+        (see also the description of
+	<a href="#V2ObjectHeaderPrefix">Version 2 Data Object Header Prefix.</a>):
+    </p>
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Version 2 Object Header Continuation Block
+    </caption>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message.  This table
-	    describes version 1.</p></td>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
+	  <th>byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>Number of Filters</p></td>
-	  <td><p>The total number of filters described in this
-	    message. The maximum possible number of filters in a
-	    message is 32.</p></td>
+	  <td colspan="4">Signature</td>
+	</tr>
+	<tr>
+	  <td>Header Message Type #1</td>
+	  <td colspan="2">Size of Header Message Data #1</td>
+	  <td>Header Message #1 Flags</td>
 	</tr>
 
 	<tr>
-	  <td><p>Filter Description List</p></td>
-	  <td><p>A description of each filter.  A filter description
-	    appears in the next table.</p></td>
+	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
-      </table>
-    </div>
 
-    <br />
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Filter Description
-	</caption>
+	<tr>
+	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
+	</tr>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>  
+	  <td colspan="4">.<br />.<br />.<br /></td>
+	</tr>
 
 	<tr>
-	  <td colspan="2">Filter Identification Value</td>
-	  <td colspan="2">Name Length</td>
+	  <td>Header Message Type #n</td>
+	  <td colspan="2">Size of Header Message Data #n</td>
+	  <td>Header Message #n Flags</td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Flags</td>
-	  <td colspan="2">Number Client Data Values</td>
+	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
+	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
+	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Padding <em>(variable size, optional)</em></td>
+	  <td colspan="4">Checksum</td>
 	</tr>
       </table>
     </div>
@@ -12465,188 +16099,210 @@ Pipeline Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Version 2 Object Header Continuation Block
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Filter Identification Value</p></td>
+	  <td><p>Signature</p></td>
 	  <td>
-            <p>
-            This value, often referred to as a filter identifier,
-            is designed to be a unique identifier for the filter. 
-            Values from zero through 32,767 are reserved for filters 
-            supported by The HDF Group in the HDF5 Library and for 
-            filters requested and supported by third parties. 
-            Filters supported by The HDF Group are documented immediately
-            below.  Information on 3rd-party filters can be found at 
-            The HDF Group’s 
-            <a href="http://www.hdfgroup.org/services/contributions.html">
-            Contributions</a> page.</p>
-            
-            <p>
-            To request a filter identifier, please contact 
-            The HDF Group’s Help Desk at
-            <img src="Graphics/help.png" valign="middle" height="14"
-            alt="The HDF Group Help Desk">.
-            You will be asked to provide the following information:</p>
-            <ol>
-              <li>Contact information for the developer requesting the
-                  new identifier</li> 
-              <li>A short description of the new filter</li> 
-              <li>Links to any relevant information, including licensing 
-                  information</li> 
-            </ol>
-            <p>
-            Values from 32768 to 65535 are reserved for non-distributed uses 
-            (for example, internal company usage) or for application usage 
-            when testing a feature. The HDF Group does not track or document 
-            the use of the filters with identifiers from this range.</p>
-
-            <p>
-            The filters currently in library version 1.8.0 are 
-	    listed below:
-        
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Identification</th>
-		<th width="15%" align="left">Name</th>
-		<th width="65%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>N/A</td>
-		<td>Reserved</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>deflate</td>
-		<td>GZIP deflate compression</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>2</code></td>
-		<td>shuffle</td>
-		<td>Data element shuffling</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>3</code></td>
-		<td>fletcher32</td>
-		<td>Fletcher32 checksum</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>4</code></td>
-		<td>szip</td>
-		<td>SZIP compression</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>5</code></td>
-		<td>nbit</td>
-		<td>N-bit packing</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>6</code></td>
-		<td>scaleoffset</td>
-		<td>Scale and offset encoded values</td>
-	      </tr>
-	    </table>
-        </p></td>
+            <p>The ASCII character string “<code>OCHK</code>” 
+            is used to indicate the beginning of an object header 
+            continuation block. This gives file consistency checking 
+            utilities a better chance of reconstructing a damaged file.
+            </p>
+	  </td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>Name Length</p></td>
-	  <td><p>Each filter has an optional null-terminated ASCII name
-	    and this field holds the length of the name including the
-	    null termination padded with nulls to be a multiple of
-	    eight. If the filter has no name then a value of zero is
-	    stored in this field.</p></td>
+	  <td><p>Header Message #n Type</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+          </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Flags</p></td>
-	  <td><p>The flags indicate certain properties for a filter.  The 
-	    bit values defined so far are:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Bit</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-	        <td>If set then the filter is an optional filter.
-		During output, if an optional filter fails it will be
-		silently skipped in the pipeline.</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1-15</code></td>
-	        <td>Reserved (zero)</td>
-	      </tr>
-	    </table></p>
-	  </td>
+	  <td><p>Size of Header Message #n Data</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+          </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Number of Client Data Values</p></td>
-	  <td><p>Each filter can store integer values to control
-	    how the filter operates.  The number of entries in the
-	    <em>Client Data</em> array is stored in this field.</p></td>
-	</tr>
+	  <td><p>Header Message #n Flags</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+          </p></td>
+        </tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>If the <em>Name Length</em> field is non-zero then it will
-	    contain the size of this field, padded to a multiple of eight.  This 
-	    field contains a null-terminated, ASCII character
-	    string to serve as a comment/name for the filter.</p></td>
-	</tr>
+	  <td><p>Header Message #n Creation Order</p></td>
+	  <td>
+            <p>This field stores the order that a message of a given type
+                was created in.</p>
+	    <p>This field is present if bit 2 of <em>flags</em> is set.</p>
+          </td>
+        </tr>
 
 	<tr>
-	  <td><p>Client Data</p></td>
-	  <td><p>This is an array of four-byte integers which will be
-	    passed to the filter function.  The <em>Client Data Number</em> of
-	    Values determines the number of elements in the array.</p></td>
+	  <td><p>Header Message #n Data</p></td>
+	  <td>
+            <p>Same format as version 1 of the object header, described above.
+          </p></td>
 	</tr>
 
 	<tr>
-	  <td><p>Padding</p></td>
-	  <td><p>Four bytes of zeroes are added to the message at this
-	    point if the Client Data Number of Values field contains
-	    an odd number.</p></td>
+	  <td><p>Gap</p></td>
+	  <td>
+            <p>A gap in an object header chunk is inferred by the end of the
+                messages for the chunk before the beginning of the chunk’s
+                checksum.  Gaps are always smaller than the size of an
+                object header message prefix (message type + message size +
+                message flags).</p>
+            <p>Gaps are formed when a message (typically an attribute message)
+                in an earlier chunk is deleted and a message from a later
+                chunk that does not quite fit into the free space is moved
+                into the earlier chunk.</p>
+          </td>
 	</tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>This is the checksum for the object header chunk.
+            </p>
+          </td>
+        </tr>
+      </table>
+    </div>
+    
+<h4><a name="SymbolTableMessage">IV.A.2.r. The Symbol Table 
+Message</a></h4>
+
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Symbol Table 
+      Message</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0011</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Required for 
+      “old style” groups; may not be repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>Each “old style” group has a v1 B-tree and a 
+      local heap for storing symbol table entries, which are located 
+      with this message.</td></tr>
+    <tr><td colspan="2"><b>Format of data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Symbol Table Message
+        </caption>
+
+        <tr>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+          <th width="25%">byte</th>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />v1 B-tree Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Local Heap Address<sup>O</sup><br /><br /></td>
+        </tr>
+      </table>
+
+      <table class="note">
+        <tr>
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Symbol Table Message
+        </caption>
+        <tr>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><p>v1 B-tree Address</p></td>
+          <td><p>This value is the address of the v1 B-tree containing the
+            symbol table entries for the group.</p></td>
+        </tr>
+
+        <tr>
+          <td><p>Local Heap Address</p></td>
+          <td><p>This value is the address of the local heap containing
+            the link names for the symbol table entries for the group.</p></td>
+        </tr>
       </table>
     </div>
+    
+<h4><a name="ModificationTimeMessage">IV.A.2.s. The Object 
+Modification Time Message</a></h4>
 
-    <br />
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Object 
+      Modification Time</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0012</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>The object modification time is a timestamp which indicates 
+      the time of the last modification of an object. The time is 
+      updated when any object header message changes according to 
+      the system clock where the change was posted.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Filter Pipeline Message - Version 2
-	</caption>
+    <caption>
+        Layout: Modification Time Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
-	</tr>  
+	</tr>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Number of Filters</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td colspan="3">Reserved <em>(zero)</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4">Seconds After UNIX Epoch</td>
 	</tr>
       </table>
     </div>
@@ -12654,6 +16310,9 @@ Pipeline Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Modification Time Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -12661,55 +16320,81 @@ Pipeline Message</a></h4>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td><p>The version number for this message.  This table
-	    describes version 2.</p></td>
-	</tr>
+	  <td><p>The version number is used for changes in the format of Object Modification Time
+	      and is described here:
+	     <table class="list">
+		<tr>
+		  <th width="20%" align="center">Version</th>
+		  <th width="80%" align="left">Description</th>
+		</tr>
 
-	<tr>
-	  <td><p>Number of Filters</p></td>
-	  <td><p>The total number of filters described in this
-	    message. The maximum possible number of filters in a
-	    message is 32.</p></td>
+		<tr>
+		  <td align="center"><code>0</code></td>
+		  <td>Never used.</td>
+		</tr>
+
+		<tr>
+		  <td align="center"><code>1</code></td>
+		  <td>Used by Version 1.6.1 and after of the library to encode time.  In
+		    this version, the time is the seconds after Epoch.</td>
+		</tr>
+	      </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Filter Description List</p></td>
-	  <td><p>A description of each filter.  A filter description
-	    appears in the next table.</p></td>
+	  <td><p>Seconds After UNIX Epoch</p></td>
+	  <td><p>A 32-bit unsigned integer value that stores the number of
+            seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970,
+            Coordinated Universal Time.</p></td>
 	</tr>
       </table>
     </div>
+    
+<h4><a name="BtreeKValuesMessage">IV.A.2.t. The B-tree 
+‘K’ Values Message</a></h4>
 
-    <br />
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> B-tree 
+      ‘K’ Values</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0013</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>This message retrieves non-default ‘K’ values 
+      for internal and leaf nodes of a group or indexed storage v1 
+      B-trees. This message is <em>only</em> found in the superblock 
+      extension.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Filter Description
-	</caption>
+    <caption>
+        Layout: B-tree ‘K’ Values Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
-	</tr>  
-
-	<tr>
-	  <td colspan="2">Filter Identification Value</td>
-	  <td colspan="2">Name Length <em>(optional)</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Flags</td>
-	  <td colspan="2">Number Client Data Values</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
+	  <td>Version</td>
+	  <td colspan="2">Indexed Storage Internal Node K</td>
+          <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
+	  <td colspan="2">Group Internal Node K</td>
+	  <td colspan="2">Group Leaf Node K</td>
 	</tr>
       </table>
     </div>
@@ -12717,202 +16402,76 @@ Pipeline Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: B-tree ‘K’ Values Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Filter Identification Value</p></td>
-	  <td>
-            <p>
-            This value, often referred to as a filter identifier,
-            is designed to be a unique identifier for the filter. 
-            Values from zero through 32,767 are reserved for filters 
-            supported by The HDF Group in the HDF5 Library and for 
-            filters requested and supported by third parties. 
-            Filters supported by The HDF Group are documented immediately
-            below.  Information on 3rd-party filters can be found at 
-            The HDF Group’s 
-            <a href="http://www.hdfgroup.org/services/contributions.html">
-            Contributions</a> page.</p>
-            
-            <p>
-            To request a filter identifier, please contact 
-            The HDF Group’s Help Desk at
-            <img src="Graphics/help.png" valign="middle" height="14"
-            alt="The HDF Group Help Desk">.
-            You will be asked to provide the following information:</p>
-            <ol>
-              <li>Contact information for the developer requesting the
-                  new identifier</li> 
-              <li>A short description of the new filter</li> 
-              <li>Links to any relevant information, including licensing 
-                  information</li> 
-            </ol>
-            <p>
-            Values from 32768 to 65535 are reserved for non-distributed uses 
-            (for example, internal company usage) or for application usage 
-            when testing a feature. The HDF Group does not track or document 
-            the use of the filters with identifiers from this range.</p>
-
-            <p>
-            The filters currently in library version 1.8.0 are 
-	    listed below:
-        
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Identification</th>
-		<th width="15%" align="left">Name</th>
-		<th width="65%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>N/A</td>
-		<td>Reserved</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>deflate</td>
-		<td>GZIP deflate compression</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>2</code></td>
-		<td>shuffle</td>
-		<td>Data element shuffling</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>3</code></td>
-		<td>fletcher32</td>
-		<td>Fletcher32 checksum</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>4</code></td>
-		<td>szip</td>
-		<td>SZIP compression</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>5</code></td>
-		<td>nbit</td>
-		<td>N-bit packing</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>6</code></td>
-		<td>scaleoffset</td>
-		<td>Scale and offset encoded values</td>
-	      </tr>
-	    </table>
-	  </p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Name Length</p></td>
-	  <td><p>Each filter has an optional null-terminated ASCII name
-	    and this field holds the length of the name including the
-	    null termination padded with nulls to be a multiple of
-	    eight. If the filter has no name then a value of zero is
-	    stored in this field.</p>
-            <p>Filters with IDs less than 256 (in other words, filters 
-            that are defined in this format documentation) do not store 
-            the <em>Name Length</em> or <em>Name</em> fields.
-            </p>
-          </td>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for this message. This document describes
+            version 0.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Flags</p></td>
-	  <td><p>The flags indicate certain properties for a filter.  The 
-	    bit values defined so far are:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Bit</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-	        <td>If set then the filter is an optional filter.
-		During output, if an optional filter fails it will be
-		silently skipped in the pipeline.</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1-15</code></td>
-	        <td>Reserved (zero)</td>
-	      </tr>
-	    </table></p>
+	  <td><p>Indexed Storage Internal Node K</p></td>
+	  <td><p>This is the node ‘K’ value for each internal node of an
+                indexed storage v1 B-tree.  See the description of this field
+                in version 0 and 1 of the superblock as well the section on
+                v1 B-trees.
+	      </p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Number of Client Data Values</p></td>
-	  <td><p>Each filter can store integer values to control
-	    how the filter operates.  The number of entries in the
-	    <em>Client Data</em> array is stored in this field.</p></td>
+	  <td><p>Group Internal Node K</p></td>
+	  <td><p>This is the node ‘K’ value for each internal node of a group 
+                v1 B-tree.  See the description of this field in version 0 and
+                1 of the superblock as well as the section on v1 B-trees.
+	      </p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>If the <em>Name Length</em> field is non-zero then it will
-                contain the size of this field, <em>not</em> padded to a multiple
-                of eight.  This field contains a <em>non-</em>null-terminated,
-                ASCII character string to serve as a comment/name for the filter.
-            </p>
-            <p>Filters that are defined in this format documentation 
-            such as deflate and shuffle do not store the <em>Name 
-            Length</em> or <em>Name</em> fields.
-            </p>
-          </td>
+	  <td><p>Group Leaf Node K</p></td>
+	  <td><p>This is the node ‘K’ value for each leaf node of a group v1
+                B-tree.  See the description of this field in version 0 and 1
+                of the superblock as well as the section on v1 B-trees.
+	      </p>
+	  </td>
 	</tr>
 
-	<tr>
-	  <td><p>Client Data</p></td>
-	  <td><p>This is an array of four-byte integers which will be
-	    passed to the filter function.  The Client Data Number of
-	    Values</em> determines the number of elements in the array.</p>
-          </td>
-	</tr>
       </table>
     </div>
     
-<br />
-<h4><a name="AttributeMessage">IV.A.2.m. The Attribute Message</a></h4>
+<h4><a name="DrvInfoMessage">IV.A.2.u. The Driver Info 
+Message</a></h4>
 
     <!-- start msgdesc table -->
     <center>
     <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Attribute</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000C</td></tr>
+    <tr><td colspan="2"><b>Header Message Name:</b> Driver 
+      Info</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0014</td></tr>
     <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may be 
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
       repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td><p>The <em>Attribute</em> message is used to store objects 
-      in the HDF5 file which are used as attributes, or 
-      “metadata” about the current object. An attribute 
-      is a small dataset; it has a name, a datatype, a dataspace, and 
-      raw data. Since attributes are stored in the object header, they 
-      should be relatively small (in other words, less than 64KB). 
-      They can be associated with any type of object which has an 
-      object header (groups, datasets, or committed (named) 
-      datatypes).</p>
-      <p>In 1.8.x versions of the library, attributes can be larger 
-      than 64KB. See the 
-      <a href="UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FAttributes%2FHDF5_Attributes.htm%3Frhtocid%3Dtoc8.2_1%23TOC_8_5_Special_Issuesbc-13">
-      “Special Issues”</a> section of the Attributes chapter 
-      in the <cite>HDF5 User’s Guide</cite> for more information.</p>
-      <p>Note: Attributes on an object must have unique names: 
-      the HDF5 Library currently enforces this by causing the 
-      creation of an attribute with a duplicate name to fail. 
-      Attributes on different objects may have the same name, 
-      however.</p></td></tr>
+    
+    <tr><td>
+    <b>Description:</b></td>
+      <td>This message contains information needed by the file driver 
+      to reopen a file. This message is <em>only</em> found in the 
+      superblock extension: see the <a href="#SuperblockExt"> 
+      “Disk Format: Level 0C - Superblock Extension”</a> 
+      section for more information. For more information on the fields 
+      in the driver info message, see the <a href="#DriverInfo"> 
+      “Disk Format: Level 0B - File Driver Info”</a> 
+      section; those who use the multi and family file drivers will 
+      find this section particularly helpful.</td></tr>
     <tr><td colspan="2"><b>Format of Data:</b> See the tables 
       below.</td></tr>
     </table></center>
@@ -12920,9 +16479,9 @@ Pipeline Message</a></h4>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  Attribute Message (Version 1)
-	</caption>
+    <caption>
+        Layout: Driver Info Message
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -12933,36 +16492,30 @@ Pipeline Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Reserved (zero)</td>
-	  <td colspan="2">Name Size</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Datatype Size</td>
-	  <td colspan="2">Dataspace Size</td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
+          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Driver Identification</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
+	  <td colspan="2">Driver Information Size</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br /><br />Driver Information <em>(variable size)</em><br /><br /><br /></td>
 	</tr>
+	
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Driver Info Message
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -12970,90 +16523,63 @@ Pipeline Message</a></h4>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td><p>The version number information is used for changes in the format of the 
-	    attribute message and is described here:
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Version</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>Never used.</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>Used by the library before version 1.6 to encode attribute message.
-		    This version does not support shared datatypes.</td>
-	      </tr>
-	    </table></p>
+	  <td><p>The version number for this message. This document describes
+                version 0.</p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Name Size</p></td>
-	  <td><p>The length of the attribute name in bytes including the
-	    null terminator.  Note that the <em>Name</em> field below may
-	    contain additional padding not represented by this
-	    field.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Datatype Size</p></td>
-	  <td><p>The length of the datatype description in the <em>Datatype</em>
-	    field below.  Note that the <em>Datatype</em> field may contain
-	    additional padding not represented by this field.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Dataspace Size</p></td>
-	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
-	    field below.  Note that the <em>Dataspace</em> field may contain
-	    additional padding not represented by this field.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>The null-terminated attribute name.  This field is
-	    padded with additional null characters to make it a
-	    multiple of eight bytes.</p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Datatype</p></td>
-	  <td><p>The datatype description follows the same format as
-	    described for the datatype object header message.  This
-	    field is padded with additional zero bytes to make it a
-	    multiple of eight bytes.</p></td>
+	<td><p>Driver Identification</p></td>
+	  <td><p>This is an eight-byte ASCII string without null termination which
+                identifies the driver.
+	      </p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataspace</p></td>
-	  <td><p>The dataspace description follows the same format as
-	    described for the dataspace object header message.  This
-	    field is padded with additional zero bytes to make it a
-	    multiple of eight bytes.</p></td>
+	  <td><p>Driver Information Size</p></td>
+	  <td><p>The size in bytes of the <em>Driver Information</em> field of this
+                message.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Data</p></td>
-	  <td><p>The raw data for the attribute.  The size is determined
-	    from the datatype and dataspace descriptions.  This
-	    field is <em>not</em> padded with additional bytes.</p></td>
+	  <td><p>Driver Information</p></td>
+	  <td><p>Driver information is stored in a format defined by the file driver.</p>
+	  </td>
 	</tr>
       </table>
     </div>
+    
+<h4><a name="AinfoMessage">IV.A.2.v. The Attribute Info 
+Message</a></h4>
 
-    <br />
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Attribute 
+      Info</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0015</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>This message stores information about the attributes on an 
+      object, such as the maximum creation index for the attributes 
+      created and the location of the attribute storage when the 
+      attributes are stored “densely”.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Attribute Message (Version 2)
-	</caption>
+    <caption>
+        Layout: Attribute Info Message
+    </caption>
 
-	<tr align="center">
+	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
@@ -13063,160 +16589,141 @@ Pipeline Message</a></h4>
 	<tr>
 	  <td>Version</td>
 	  <td>Flags</td>
-	  <td colspan="2">Name Size</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Datatype Size</td>
-	  <td colspan="2">Dataspace Size</td>
+	  <td colspan="2">Maximum Creation Index <em>(optional)</em></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Attribute Name v2 B-tree Address<sup>O</sup><br /><br /></td>
 	</tr>
-
 	<tr>
-	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4"><br />Attribute Creation Order v2 B-tree Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
 	</tr>
+	
+      </table>
 
-	<tr>
-	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
-	</tr>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
-
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number information is used for changes in the
-                format of the attribute message and is described here:
-                <table class="list">
-                  <tr>
-                    <th width="20%" align="center">Version</th>
-                    <th width="80%" align="left">Description</th>
-                  </tr>
-
-                  <tr>
-                    <td align="center"><code>2</code></td>
-                    <td>Used by the library of version 1.6.x and after to encode
-                        attribute messages.
-                        This version supports shared datatypes.  The fields of
-                        name, datatype, and dataspace are not padded with
-                        additional bytes of zero.
-                    </td>
-                  </tr>
-                </table></p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Flags</p></td>
-	  <td><p>This bit field contains extra information about 
-                interpreting the attribute message:
-              
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Bit</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>If set, datatype is shared.</td>
-	      </tr>
-
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>If set, dataspace is shared.</td>
-	      </tr>
-	    </table></p>
-	  </td>
-	</tr>
-
+    <div align="center">
+      <table class="desc">
+    <caption>
+        Fields: Attribute Info Message
+    </caption>
 	<tr>
-	  <td><p>Name Size</p></td>
-	  <td><p>The length of the attribute name in bytes including the
-	    null terminator.</p></td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Datatype Size</p></td>
-	  <td><p>The length of the datatype description in the <em>Datatype</em>
-	    field below.</p></td>
+	  <td><p>Version</p></td>
+	  <td><p>The version number for this message. This document describes
+                version 0.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataspace Size</p></td>
-	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
-	    field below.</p></td>
+	<td><p>Flags</p></td>
+	  <td><p>This is the attribute index information flag with the
+                following definition:
+	      
+            <table class="list">
+                <tr>
+                  <th width="20%" align="center">Bit</th>
+                  <th width="80%" align="left">Description</th>
+                </tr>
+
+                <tr>
+                  <td align="center"><code>0</code></td>
+                  <td>If set, creation order for attributes is tracked.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>1</code></td>
+                  <td>If set, creation order for attributes is indexed.
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>2-7</code></td>
+                  <td>Reserved</td>
+                </tr>
+	    </table></p>
+            
+          </td>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
-	    padded with additional bytes.</p></td>
+	  <td><p>Maximum Creation Index</p></td>
+	  <td><p>The is the maximum creation order index value for the
+                attributes on the object.</p>
+	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Datatype</p></td>
-	  <td><p>The datatype description follows the same format as
-                described for the datatype object header message.
-            </p>
-            <p>If the
-                <em>Flag</em> field indicates this attribute’s datatype is
-                shared, this field will contain a “shared message” encoding
-                instead of the datatype encoding.
-            </p>
-            <p>This field is <em>not</em> padded with additional bytes.
-            </p>
-          </td>
+	  <td><p>Fractal Heap Address</p></td>
+	  <td><p>This is the address of the fractal heap to store dense
+                attributes.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataspace</p></td>
-	  <td><p>The dataspace description follows the same format as
-                described for the dataspace object header message.
-            </p>
-            <p>If the
-                <em>Flag</em> field indicates this attribute’s dataspace is
-                shared, this field will contain a “shared message” encoding
-                instead of the dataspace encoding.
-            </p>
-            <p>This field is <em>not</em> padded with additional bytes.</p>
-          </td>
+	  <td><p>Attribute Name v2 B-tree Address</p></td>
+	  <td><p>This is the address of the version 2 B-tree to index the
+                names of densely stored attributes.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Data</p></td>
-	  <td><p>The raw data for the attribute.  The size is determined
-                from the datatype and dataspace descriptions.
-            </p>
-            <p>This field is <em>not</em> padded with additional zero bytes.
-            </p>
-          </td>
+	  <td><p>Attribute Creation Order v2 B-tree Address</p></td>
+	  <td><p>This is the address of the version 2 B-tree to index the
+                creation order of densely stored attributes.</p>
+	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
+	  </td>
 	</tr>
+
       </table>
     </div>
+    
+<h4><a name="RefCountMessage">IV.A.2.w. The Object Reference 
+Count Message</a></h4>
 
-    <br />
+    <!-- start msgdesc table -->
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> Object Reference 
+      Count</td></tr>
+    <tr><td colspan="2"><b>Header Message Type:</b> 0x0016</td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td><b>Description:</b></td>
+      <td>This message stores the number of hard links (in groups or 
+      objects) pointing to an object: in other words, its 
+      <em>reference count</em>.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    <!-- end msgdesc table -->
+    
     <div align="center">
       <table class="format">
-	<caption>
-	  Attribute Message (Version 3)
-	</caption>
+    <caption>
+        Layout: Object Reference Count
+    </caption>
 
-	<tr align="center">
+	<tr>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
 	  <th width="25%">byte</th>
@@ -13225,34 +16732,11 @@ Pipeline Message</a></h4>
 
 	<tr>
 	  <td>Version</td>
-	  <td>Flags</td>
-	  <td colspan="2">Name Size</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Datatype Size</td>
-	  <td colspan="2">Dataspace Size</td>
-	</tr>
-
-	<tr>
-	  <td>Name Character Set Encoding</td>
           <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
+	  <td colspan="4">Reference count</td>
 	</tr>
       </table>
     </div>
@@ -13260,6 +16744,9 @@ Pipeline Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Object Reference Count
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
@@ -13267,70 +16754,136 @@ Pipeline Message</a></h4>
 
 	<tr>
 	  <td><p>Version</p></td>
-	  <td><p>The version number information is used for changes in the
-                format of the attribute message and is described here:
-                <table class="list">
-                  <tr>
-                    <th width="20%" align="center">Version</th>
-                    <th width="80%" align="left">Description</th>
-                  </tr>
-
-                  <tr>
-                    <td align="center"><code>3</code></td>
-                    <td>Used by the library of version 1.8.x and after to
-                        encode attribute messages.
-                        This version supports attributes with non-ASCII names.
-                    </td>
-                  </tr>
-                </table></p>
+	  <td><p>The version number for this message. This document describes
+            version 0.</p>
 	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Flags</p></td>
-	  <td><p>This bit field contains extra information about 
-                interpreting the attribute message:
-              
-	    <table class="list">
-	      <tr>
-		<th width="20%" align="center">Bit</th>
-		<th width="80%" align="left">Description</th>
-	      </tr>
+	  <td><p>Reference Count</p></td>
+	  <td><p>The unsigned 32-bit integer is the reference count for the 
+        object. This message is only present in “version 2” 
+        (or later) object headers, and if not present those object 
+        header versions, the reference count for the object is assumed 
+        to be 1.</p>
+	  </td>
+	</tr>
 
-	      <tr>
-		<td align="center"><code>0</code></td>
-		<td>If set, datatype is shared.</td>
-	      </tr>
+      </table>
+    </div>
+    
+<br />
 
-	      <tr>
-		<td align="center"><code>1</code></td>
-		<td>If set, dataspace is shared.</td>
-	      </tr>
-	    </table></p>
-	  </td>
+<!-- Will be updated for release 1.10.1
+
+<h4><a name="FsinfoMessage">IV.A.2.x. The File Space Info 
+Message</a></h4>
+
+    <center>
+    <table class="msgdesc">
+    <tr><td colspan="2"><b>Header Message Name:</b> File Space 
+      Info</td></tr>
+    <p style="background-color:#ff9999" align="left">change for 1.10</p>
+    <tr style="background-color:#DDEEEE"><td colspan="2"><b>Header 
+    Message Type:</b> 0x0017 WORK IN PROGRESS
+    </td></tr>
+    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
+    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
+      repeated.</td></tr>
+    <tr><td>
+    <b>Description:</b></td>
+      <td>This message stores the file space management strategy (see 
+      description below) that the library uses in handling file space 
+      request for the file. It also contains the free-space section 
+      threshold used by the library’s free-space managers for 
+      the file. If the strategy is 1, this message also contains the 
+      addresses of the file’s free-space managers which track 
+      free space for each type of file space allocation. There are 
+      six basic types of file space allocation: superblock, B-tree, 
+      raw data, global heap, local heap, and object header. See the 
+      description of <a href="#FreeSpaceManager">Free-space 
+      Manager</a> as well the description of allocation types in 
+      <a href="#AppendixB">Appendix B</a>.</td></tr>
+    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
+      below.</td></tr>
+    </table></center>
+    
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: File Space Info
+    </caption>
+
+	<tr>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td><p>Name Size</p></td>
-	  <td><p>The length of the attribute name in bytes including the
-	    null terminator.</p></td>
+	  <td>Version</td>
+	  <td>Strategy</td>
+          <td colspan="2">Threshold<sup>L</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Superblock Free-space Manager Address<sup>O</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">B-tree Free-space Manager Address<sup>O</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Raw Data Free-space Manager Address<sup>O</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Global Heap Free-space Manager Address<sup>O</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Local Heap Free-space Manager Address<sup>O</sup></td>
+	</tr>
+	<tr>
+	  <td colspan="4">Object Header Free-space Manager Address<sup>O</sup></td>
 	</tr>
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
 	<tr>
-	  <td><p>Datatype Size</p></td>
-	  <td><p>The length of the datatype description in the <em>Datatype</em>
-	    field below.</p></td>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Dataspace Size</p></td>
-	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
-	    field below.</p></td>
+	  <td><p>Version</p></td>
+	  <td><p>This is the version number of this message. This document describes
+            version 0.</p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Name Character Set Encoding</p></td>
-	  <td><p>The character set encoding for the attribute’s name:
+	  <td><p>Strategy</p></td>
+	  <td><p>This is the  file space management strategy for the file.
+		 There are four types of strategies:
             <table class="list">
                 <tr>
                   <th width="20%" align="center">Value</th>
@@ -13338,394 +16891,571 @@ Pipeline Message</a></h4>
                 </tr>
 
                 <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>ASCII character set encoding
+                  <td align="center"><code>1</code></td>
+                  <td>With this strategy, the HDF5 Library’s free-space managers track the
+		      free space that results from the manipulation of HDF5 objects
+		      in the HDF5 file.  The free space information is saved when the
+		      file is closed, and reloaded when the file is reopened.
+		    <br />
+		      When space is needed for file metadata or raw data, 
+		      the HDF5 Library first requests space from the library’s free-space 
+		      managers. If the request is not satisfied, the library requests space 
+		      from the aggregators. If the request is still not satisfied, 
+		      the library requests space from the virtual file driver. 
+		      That is, the library will use all of the mechanisms for allocating
+		      space.
                   </td>
                 </tr>
 
                 <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>UTF-8 character set encoding
+                  <td align="center"><code>2</code></td>
+                  <td>This is the HDF5 Library’s default file space management strategy. 
+		      With this strategy, the library’s free-space managers track the free space
+		      that results from the manipulation of HDF5 objects in the HDF5 file.
+		      The free space information is NOT saved when the file is closed and
+		      the free space that exists upon file closing becomes unaccounted
+		      space in the file.
+		    <br />
+		      As with strategy #1, the library will try all of the mechanisms 
+		      for allocating space.  When space is needed for file metadata or 
+		      raw data, the library first requests space from the free-space
+		      managers.  If the request is not satisfied, the library requests
+		      space from the aggregators.  If the request is still not satisfied,
+		      the library requests space from the virtual file driver.
                   </td>
                 </tr>
-            </table>
-            </p>
-          </td>
+
+                <tr>
+                  <td align="center"><code>3</code></td>
+                  <td>With this strategy, the HDF5 Library does not track free space that results
+		      from the manipulation of HDF5 objects in the HDF5 file and
+		      the free space becomes unaccounted space in the file.
+		    <br />
+		      When space is needed for file metadata or raw data,
+		      the library first requests space from the aggregators. 
+		      If the request is not satisfied, the library requests space from 
+		      the virtual file driver. 
+                  </td>
+                </tr>
+                <tr>
+                  <td align="center"><code>4</code></td>
+                  <td>With this strategy, the HDF5 Library does not track free space that results
+		      from the manipulation of HDF5 objects in the HDF5 file and
+		      the free space becomes unaccounted space in the file.
+		    <br />
+		      When space is needed for file metadata or raw data,
+		      the library requests space from the virtual file driver. 
+                  </td>
+                </tr>
+            </table></p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
-	    padded with additional bytes.</p></td>
+	  <td><p>Threshold</p></td>
+	  <td><p>This is the free-space section threshold.
+	    The library’s free-space managers will track only 
+        free-space sections with size greater than or equal to 
+        <em>threshold</em>. The default is to track free-space 
+        sections of all sizes.</p>
+	  </td>
 	</tr>
-
 	<tr>
-	  <td><p>Datatype</p></td>
-	  <td><p>The datatype description follows the same format as
-                described for the datatype object header message.
-            </p>
-            <p>If the
-                <em>Flag</em> field indicates this attribute’s datatype is
-                shared, this field will contain a “shared message” encoding
-                instead of the datatype encoding.
+	  <td><p>Superblock Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_SUPER allocation type.
             </p>
-            <p>This field is <em>not</em> padded with additional bytes.
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>B-tree Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_BTREE allocation type.
             </p>
-          </td>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Dataspace</p></td>
-	  <td><p>The dataspace description follows the same format as
-                described for the dataspace object header message.
+	  <td><p>Raw Data Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_DRAW allocation type.
             </p>
-            <p>If the
-                <em>Flag</em> field indicates this attribute’s dataspace is
-                shared, this field will contain a “shared message” encoding
-                instead of the dataspace encoding.
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Global Heap Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_GHEAP allocation type.
             </p>
-            <p>This field is <em>not</em> padded with additional bytes.</p>
-          </td>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td><p>Data</p></td>
-	  <td><p>The raw data for the attribute.  The size is determined
-                from the datatype and dataspace descriptions.
+	  <td><p>Local Heap Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_LHEAP allocation type.
             </p>
-            <p>This field is <em>not</em> padded with additional zero bytes.
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Object Header Free-space Manager Address</p></td>
+	  <td><p>This is the address of the free-space manager for 
+        H5FD_MEM_OHDR allocation type.
             </p>
-          </td>
+	  </td>
 	</tr>
       </table>
     </div>
-    
-<br />
-<h4><a name="CommentMessage">IV.A.2.n. The Object Comment 
-Message</a></h4>
+    <br />
+-->
+
+<h3><a name="DataStorage">
+IV.B. Disk Format: Level 2B - Data Object Data Storage</a></h3>
+
+<p>The data for an object is stored separately from its header
+    information in the file and may not actually be located in the HDF5 file
+    itself if the header indicates that the data is stored externally.  The
+    information for each record in the object is stored according to the
+    dimensionality of the object (indicated in the dataspace header message).
+    Multi-dimensional array data is stored in C order; in other words, the
+    “last” dimension changes fastest.</p>
+
+<p>Data whose elements are composed of atomic datatypes are stored in IEEE
+    format, unless they are specifically defined as being stored in a different
+    machine format with the architecture-type information from the datatype
+    header message.  This means that each architecture will need to [potentially]
+    byte-swap data values into the internal representation for that particular
+    machine.</p>
+
+<p> Data with a variable-length datatype is stored in the global heap
+    of the HDF5 file.  Global heap identifiers are stored in the 
+    data object storage.</p>
+
+<p>Data whose elements are composed of reference datatypes are stored in
+    several different ways depending on the particular reference type involved.
+    Object pointers are just stored as the offset of the object header being
+    pointed to with the size of the pointer being the same number of bytes as
+    offsets in the file.</p>
+
+<p>Dataset region references are stored as a heap-ID which points to 
+the following information within the file-heap: an offset of the object 
+pointed to, number-type information (same format as header message), 
+dimensionality information (same format as header message), sub-set start 
+and end information (in other words, a coordinate location for each), 
+and field start and end names (in other words, a [pointer to the] string 
+indicating the first field included and a [pointer to the] string name 
+for the last field).  </p>
+
+<p>Data of a compound datatype is stored as a contiguous stream of the items
+    in the structure, with each item formatted according to its datatype.</p>
+
+
+
+<h2><a name="AppendixA">
+V. Appendix A: Definitions</a></h2>
+
+<p>Definitions of various terms used in this document are included in 
+this section.</p>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Object 
-      Comment</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000D</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>The object comment is designed to be a short description of 
-      an object. An object comment is a sequence of non-zero 
-      (<code>\0</code>) ASCII characters with no other formatting 
-      included by the library.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-    below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
     <div align="center">
-      <table class="format">
-	<caption>
-	  Name Message
-	</caption>
+    <table class="glossary">
+    <tr>
+        <th width="20%">Term</th>
+        <th>Definition</th>
+    </tr>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+    <tr>
+        <td>Undefined Address</td>
+        <td>The <a name="UndefinedAddress">undefined 
+        address</a> for a file is a file address with all bits 
+        set: in other words, <code>0xffff...ff</code>.</td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Comment <em>(variable size)</em><br /><br /></td>
+	  <td>Unlimited Size</td>
+	  <td>The <a name="UnlimitedDim">unlimited size</a> 
+      for a size is a value with all bits set: in other words, 
+      <code>0xffff...ff</code>.</td>
 	</tr>
-      </table>
+
+    </table>
     </div>
 
-    <br />
+
+
+<h2><a name="AppendixB">
+VI. Appendix B: File Memory Allocation Types</a></h2>
+
+<p>There are six basic types of file memory allocation as follows:
+</p>
     <div align="center">
       <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
+          <th width="30%">Basic Allocation Type</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Name</p></td>
-	  <td><p>A null terminated ASCII character string.</p></td>
+	  <td>H5FD_MEM_SUPER</td>
+	  <td>File memory allocated for <em>Superblock.</em></td>
 	</tr>
-      </table>
-    </div>
-    
-<br />
-<h4><a name="OldModificationTimeMessage">IV.A.2.o. The Object 
-Modification Time (Old) Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Object 
-      Modification Time (Old)</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000E</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td><p>The object modification date and time is a timestamp 
-      which indicates (using ISO-8601 date and time format) the last 
-      modification of an object. The time is updated when any object 
-      header message changes according to the system clock where the 
-      change was posted. All fields of this message should be 
-      interpreted as coordinated universal time (UTC).</p>
-      <p>This modification time message is deprecated in favor of 
-      the “new” <a href="#ModificationTimeMessage">Object 
-      Modification Time</a> message and is no longer written to the 
-      file in versions of the HDF5 Library after the 1.6.0 
-      version.</p></td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Modification Time Message
-	</caption>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+	  <td>H5FD_MEM_BTREE</td>
+	  <td>File memory allocated for <em>B-tree.</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Year</td>
+	  <td>H5FD_MEM_DRAW</td>
+	  <td>File memory allocated for raw data.</td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Month</td>
-	  <td colspan="2">Day of Month</td>
+	  <td>H5FD_MEM_GHEAP</td>
+	  <td>File memory allocated for <em>Global Heap.</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Hour</td>
-	  <td colspan="2">Minute</td>
+	  <td>H5FD_MEM_LHEAP</td>
+	  <td>File memory allocated for <em>Local Heap.</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="2">Second</td>
-	  <td colspan="2">Reserved</td>
+	  <td>H5FD_MEM_OHDR</td>
+	  <td>File memory allocated for <em>Object Header.</em></td>
 	</tr>
       </table>
     </div>
-
+    
     <br />
+<p>There are other file memory allocation types that are mapped to the
+above six basic allocation types because they are similar in nature.
+The mapping is listed in the following table:
+</p>
+    
     <div align="center">
       <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
-
-	<tr>
-	  <td><p>Year</p></td>
-	  <td><p>The four-digit year as an ASCII string. For example,
-	    <code>1998</code>.
-            </p></td>
+          <th width="30%">Basic Allocation Type</th>
+          <th>Mapping of Allocation Types to Basic Allocation Types</th>
 	</tr>
 
 	<tr>
-	  <td><p>Month</p></td>
-	  <td><p>The month number as a two digit ASCII string where
-	    January is <code>01</code> and December is <code>12</code>.</p></td>
+	  <td>H5FD_MEM_SUPER</td>
+	  <td><em>none</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Day of Month</p></td>
-	  <td><p>The day number within the month as a two digit ASCII
-	    string. The first day of the month is <code>01</code>.</p></td>
+	  <td>H5FD_MEM_BTREE</td>
+	  <td>H5FD_MEM_SOHM_INDEX</td>
 	</tr>
 
 	<tr>
-	  <td><p>Hour</p></td>
-	  <td><p>The hour of the day as a two digit ASCII string where
-	    midnight is <code>00</code> and 11:00pm is <code>23</code>.</p></td>
+	  <td>H5FD_MEM_DRAW</td>
+	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
 	</tr>
 
 	<tr>
-	  <td><p>Minute</p></td>
-	  <td><p>The minute of the hour as a two digit ASCII string where
-	    the first minute of the hour is <code>00</code> and 
-	    the last is <code>59</code>.</p></td>
+	  <td>H5FD_MEM_GHEAP</td>
+	  <td><em>none</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Second</p></td>
-	  <td><p>The second of the minute as a two digit ASCII string
-	    where the first second of the minute is <code>00</code> 
-	    and the last is <code>59</code>.</p></td>
+	  <td>H5FD_MEM_LHEAP</td>
+	  <td>H5FD_MEM_FHEAP_DBLOCK, H5FD_MEM_FSPACE_SINFO</td>
 	</tr>
 
 	<tr>
-	  <td><p>Reserved</p></td>
-	  <td><p>This field is reserved and should always be zero.</p></td>
+	  <td>H5FD_MEM_OHDR</td>
+	  <td>H5FD_MEM_FHEAP_HDR, H5FD_MEM_FHEAP_IBLOCK, H5FD_MEM_FSPACE_HDR, H5FD_MEM_SOHM_TABLE</td>
 	</tr>
       </table>
     </div>
     
-<br />
-<h4><a name="SOHMTableMessage">IV.A.2.p. The Shared Message Table 
-Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Shared Message 
-      Table</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x000F</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>This message is used to locate the table of shared object 
-      header message (SOHM) indexes. Each index consists of information 
-      to find the shared messages from either the heap or object header. 
-      This message is <em>only</em> found in the superblock 
-      extension.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
+    <br />
+<p>Allocation types that are mapped to basic allocation types are 
+described below:
+</p>
     
     <div align="center">
-      <table class="format">
-	<caption>
-	  Shared Message Table Message
-	</caption>
-
+      <table class="desc">
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+          <th width="30%">Allocation Type</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td>H5FD_MEM_FHEAP_HDR</td>
+	  <td>File memory allocated for <em>Fractal Heap Header.</em></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4"><br />Shared Object Header Message Table Address<sup>O</sup><br /><br /></td>
+	  <td>H5FD_MEM_FHEAP_DBLOCK</td>
+	  <td>File memory allocated for <em>Fractal Heap Direct Blocks.</em></td>
 	</tr>
 
 	<tr>
-	  <td>Number of Indices</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td>H5FD_MEM_FHEAP_IBLOCK</td>
+	  <td>File memory allocated for <em>Fractal Heap Indirect Blocks.</em></td>
 	</tr>
 
-      </table>
-
-      <table class="note">
-        <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
-
-    </div>
-
-    <br />
-    <div align="center">
-      <table class="desc">
 	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
+	  <td>File memory allocated for huge objects in the fractal heap.</td>
 	</tr>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message.  This document describes version 0.</p></td>
+	  <td>H5FD_MEM_FSPACE_HDR</td>
+	  <td>File memory allocated for <em>Free-space Manager Header.</em></td>
 	</tr>
 
 	<tr>
-	  <td><p>Shared Object Header Message Table Address</p></td>
-	  <td><p>This field is the address of the master table for shared
-            object header message indexes.</p>
-	  </td>
+	  <td>H5FD_MEM_FSPACE_SINFO</td>
+	  <td>File memory allocated for <em>Free-space Section List</em> of the free-space manager.</td>
 	</tr>
-
 	<tr>
-	  <td><p>Number of Indices</p></td>
-	  <td><p>This field is the number of indices in the master table.
-      </p></td>
+	  <td>H5FD_MEM_SOHM_TABLE</td>
+	  <td>File memory allocated for <em>Shared Object Header Message Table.</em></td>
+	</tr>
+	<tr>
+	  <td>H5FD_MEM_SOHM_INDEX</td>
+	  <td>File memory allocated for <em>Shared Message Record List.</em></td>
 	</tr>
-
       </table>
     </div>
+
+
+
+<h2><a name="AppendixC"> VII. Appendix C: 
+Types of Indexes for Dataset Chunks</a></h2>
+
+<p>For an HDF5 file without the latest format enabled, the library 
+uses the <a href="#V1Btrees">Version 1 B-tree</a> to index dataset 
+chunks.</p>
+
+<p>For an HDF5 file with the latest format enabled, the library uses 
+one of the following five indexing types depending on a chunked 
+dataset’s dimension specification and the way it is extended.
+</p>
+
+    <a name="SingleChunk">
+    <h3>VII.A. The Single Chunk Index</h3></a>
     
-<br />
-<h4><a name="ContinuationMessage">IV.A.2.q. The Object Header 
-Continuation Message</a></h4>
+    <p>The <i>Single Chunk</i> index can be used when the dataset fulfills 
+    the following condition:</p>
+    
+    <ul>
+    <li>the current, maximum, and chunk dimension sizes are all the same</li>
+    </ul>
+    
+    <p>The dataset has only one chunk, and the address of the single 
+    chunk is stored in the version 4 <i>Data Layout</i> message. 
+    See the <a href="#ChunkedStorage">Chunked Storage Property 
+    Description</i></a> layout and field description tables.</p>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Object Header 
-      Continuation</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0010</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>The object header continuation is the location in the file 
-      of a block containing more header messages for the current data 
-      object. This can be used when header blocks become too large or 
-      are likely to change over time.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
+    <a name="Implicit">
+    <h3>VII.B. The Implicit Index</h3></a>
+    
+    <p>The <i>Implicit</i> index can be used when the dataset fulfills 
+    the following conditions:</p>
+    
+    <ul>
+    <li>fixed maximum dimension sizes</li>
+    <li>no filter applied to the dataset</li>
+    <li>the timing for the space allocation of the dataset chunks is 
+    <code>H5P_ALLOC_TIME_EARLY</code></li>
+    </ul>
+    
+    <p>Since the dataset’s dimension sizes are known and storage space 
+    is to be allocated early, an array of dataset chunks are allocated 
+    based on the maximum dimension sizes when the dataset is created. 
+    The base address of the array is stored in the version 4 
+    <i>Data Layout</i> message. See the 
+    <a href="#ChunkedStorage">Chunked Storage Property 
+    Description</i></a> layout and field description tables.
+    </p>
+    
+    <p>When accessing a dataset chunk with a specified offset, the 
+    address of the chunk in the array is computed as below:</p>
+    
+    <dir><p><code>base address + (size of a chunk in bytes * chunk index 
+    associated with the offset)</code></p></dir>
+    
+    <p>A chunk index starts at 0 and increases according to the 
+    fastest changing dimension, then the next fastest, and so on.
+    <a name="ChunkIndex"></a>
+    The chunk index for a dataset chunk offset is computed as below:
+    <ol>
+    <li>Calculate the scaled offset for each dimension in 
+    <code>scaled_offset</code>: 
+        <br />
+	<pre>
+    scaled_offset = chunk_offset/chunk_dims
+    </pre></li>
+    <li>Calculate the # of chunks for each dimension in 
+    <code>nchunks</code>: 
+        <br />
+	<pre>
+    nchunks = (curr_dims + chunk_dims - 1)/chunk_dims
+    </pre></li>
+    
+    <li>Calculate the down chunks for each dimension in 
+    <code>down_chunks</code>:
+        <br />
+    <pre>
+    /* n is the # of dimensions */
+    for(i = (int)(n-1), acc = 1; i >= 0; i--) {
+        down_chunks[i] = acc;
+        acc *= nchunks[i];
+    } 
+    </pre>
+    </li>
+    
+    <li>Calculate the chunk index in <code>chunk_index</code>:
+        <br />
+    <pre>
+    /* n is the # of dimensions */
+    for(u = 0, chunk_index = 0; u < n; u++)
+        chunk_index += down_chunks[u] * scaled_offset[u];
+    </pre>
+    </li>
+    </ol>
+    <p>
+    For example, for a 2-dimensional dataset with 
+    <code>curr_dims[4,5]</code> and <code>chunk_dims[3,2]</code>,
+    there will be a total of 6 chunks, with 3 chunks in the fastest 
+    changing dimension and 2 chunks in the slowest changing dimension. 
+    See the figure below. 
+    The chunk index for the chunk offset <code>[3,4]</code> 
+    is computed as below:
+    <ol>
+    <code>
+    <li>scaled_offset[0] = 1, scaled_offset[1] = 2</li>
+    <li>nchunks[0] = 2, nchunks[1] = 3</li>
+    <li>down_chunks[0] = 3, down_chunks[1] = 1</li>
+    <li>chunk_index = 5</li>
+    </code>
+    </ol>
+
+
+<table align="center" width="400" border="0">
+    <tr valign="center" align="center">
+        <td>
+        <hr size="2"/>
+        <img height="250" src="FileFormatSpecChunkDiagram.jpg" 
+            alt="Chunk Diagram"></td>
+        </tr>
+    <tr valign="top" align="center">
+        <td>
+        <hr size="1" />
+        <b>Figure 3. Implicit index chunk diagram </b> 
+        <hr size="2"/></td>
+        </tr>
+</table>
+
+
+
+
+
+    <a name="FixedArray">
+    <h3>VII.C. The Fixed Array Index</h3></a>
     
+    <p>The <i>Fixed Array</i> index can be used when the dataset fulfills 
+    the following condition:</p>
+    <ul>
+    <li>fixed maximum dimension sizes</li>
+    </ul>
+    
+    <p>Since the maximum number of chunks is known, an array of 
+    in-file-on-disk addresses based on the maximum number of chunks is 
+    allocated when data is written to the dataset. To access a dataset 
+    chunk with a specified offset, the 
+    <a href="#ChunkIndex">chunk index</i></a> associated with the offset 
+    is calculated. The index is mapped into the array to locate the 
+    disk address for the chunk.</p>
+    
+    <p>The Fixed Array (FA) index structure provides space and speed 
+    improvements in locating chunks over index structures that handle 
+    more dynamic data accesses like a 
+    <a href="#AppendV2Btrees">Version 2 B-tree</a> index. 
+    The entry into the Fixed Array is the Fixed Array header which 
+    contains metadata about the entries stored in the array. The 
+    header contains a pointer to a data block which stores the array 
+    of entries that describe the dataset chunks. For greater efficiency, 
+    the array will be divided into multiple pages if the number of 
+    entries exceeds a threshold value. The space for the data block 
+    and possibly data block pages are allocated as a single contiguous 
+    block of space.</p>
+    
+    <p>The content of the data block depends on whether paging is 
+    activated or not. When paging is not used, elements that describe 
+    the chunks are stored in the data block. If paging is turned on, 
+    the data block contains a bitmap indicating which pages are 
+    initialized. Then subsequent data block pages will contain the 
+    entries that describe the chunks.</p>
+    
+    <p>An entry describes either a filtered or non-filtered dataset 
+    chunk.  The formats for both element types are described below.
+    </p>
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          Object Header Continuation Message
+            Layout: Fixed Array Header
         </caption>
 
         <tr>
-          <th width=25%>byte</th>
-          <th width=25%>byte</th>
-          <th width=25%>byte</th>
-          <th width=25%>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Offset<sup>O</sup><br /><br /></td>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td>Entry Size</td>
+          <td>Page Bits</td>
         </tr>
 
         <tr>
-          <td colspan="4"><br />Length<sup>L</sup><br /><br /></td>
+          <td colspan="4"><br />Max Num 
+          Entries<sup>L</sup><br /><br /></td>
+        </tr>
+          
+        <tr>
+          <td colspan="4"><br />Data Block 
+          Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Checksum</td>
         </tr>
+
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
         <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -13733,575 +17463,364 @@ Continuation Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
-        <tr>
-          <th width="30%">Field Name</th>
+        <caption>
+            Fields: Fixed Array Header
+        </caption>
+	<tr>
+          <th width="40%">Field Name</th>
           <th>Description</th>
         </tr>
 
         <tr>
-          <td><p>Offset</p></td>
-          <td><p>This value is the address in the file where the
-              header continuation block is located.</p></td>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>FAHD</code>” 
+            is used to indicate the beginning of a Fixed Array header. 
+            This gives file consistency checking utilities a better 
+            chance of reconstructing a damaged file.
+            </p>
+          </td>
         </tr>
-
+          
         <tr>
-          <td><p>Length</p></td>
-          <td><p>This value is the length in bytes of the header continuation
-              block in the file.</p></td>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
         </tr>
-      </table>
-    </div>
-    <br />
-
-    <p>The format of the header continuation block that this message points
-        to depends on the version of the object header that the message is
-        contained within.
-    </p>
-
-    <p>
-        Continuation blocks for version 1 object headers have no special
-        formatting information; they are merely a list of object header
-        message info sequences (type, size, flags, reserved bytes and data
-        for each message sequence).  See the description 
-	of <a href="#V1ObjectHeaderPrefix">Version 1 Data Object Header Prefix.</a>
-    </p>
-
-    <p>Continuation blocks for version 2 object headers <em>do</em> have
-        special formatting information as described here
-        (see also the description of
-	<a href="#V2ObjectHeaderPrefix">Version 2 Data Object Header Prefix.</a>):
-    </p>
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Version 2 Object Header Continuation Block
-	</caption>
-
-	<tr>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	  <th>byte</th>
-	</tr>
-
-	<tr>
-	  <td colspan="4">Signature</td>
-	</tr>
-	<tr>
-	  <td>Header Message Type #1</td>
-	  <td colspan="2">Size of Header Message Data #1</td>
-	  <td>Header Message #1 Flags</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4">.<br />.<br />.<br /></td>
-	</tr>
-
-	<tr>
-	  <td>Header Message Type #n</td>
-	  <td colspan="2">Size of Header Message Data #n</td>
-	  <td>Header Message #n Flags</td>
-	</tr>
-
-	<tr>
-	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-
-	<tr>
-	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
-	</tr>
 
 	<tr>
-	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
-	</tr>
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The ID for identifying the client of the
+                Fixed Array:
 
-	<tr>
-	  <td colspan="4">Checksum</td>
-	</tr>
-      </table>
-    </div>
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved
+                      </td>
+                    </tr>
+                </table>
+            </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Signature</p></td>
+        <tr>
+          <td><p>Entry Size</p></td>
 	  <td>
-            <p>The ASCII character string “<code>OCHK</code>”
-            is used to indicate the
-            beginning of an object header continuation block.  This gives file
-            consistency checking utilities a better chance of reconstructing a
-            damaged file.
-	    </p>
+	    <p>The size in bytes of an entry in the Fixed Array.
+            </p>
 	  </td>
-	</tr>
-	
-	<tr>
-	  <td><p>Header Message #n Type</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-          </p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Size of Header Message #n Data</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-          </p></td>
-	</tr>
-
-	<tr>
-	  <td><p>Header Message #n Flags</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-          </p></td>
         </tr>
 
 	<tr>
-	  <td><p>Header Message #n Creation Order</p></td>
+	  <td><p>Page Bits</p></td>
 	  <td>
-            <p>This field stores the order that a message of a given type
-                was created in.</p>
-	    <p>This field is present if bit 2 of <em>flags</em> is set.</p>
+            <p>The number of bits needed to store the maximum 
+            number of entries in a 
+            <a href="#FADataBlockPage">data block page.</a></p>
           </td>
-        </tr>
-
-	<tr>
-	  <td><p>Header Message #n Data</p></td>
-	  <td>
-            <p>Same format as version 1 of the object header, described above.
-          </p></td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>Gap</p></td>
+	  <td><p>Max Num Entries</p></td>
 	  <td>
-            <p>A gap in an object header chunk is inferred by the end of the
-                messages for the chunk before the beginning of the chunk’s
-                checksum.  Gaps are always smaller than the size of an
-                object header message prefix (message type + message size +
-                message flags).</p>
-            <p>Gaps are formed when a message (typically an attribute message)
-                in an earlier chunk is deleted and a message from a later
-                chunk that does not quite fit into the free space is moved
-                into the earlier chunk.</p>
-          </td>
-	</tr>
-
-        <tr>
-          <td><p>Checksum</p></td>
-          <td>
-            <p>This is the checksum for the object header chunk.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-    
-<br />
-<h4><a name="SymbolTableMessage">IV.A.2.r. The Symbol Table 
-Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Symbol Table 
-      Message</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0011</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Required for 
-      “old style” groups; may not be repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>Each “old style” group has a v1 B-tree and a 
-      local heap for storing symbol table entries, which are located 
-      with this message.</td></tr>
-    <tr><td colspan="2"><b>Format of data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
+	    <p>The maximum number of entries in the Fixed 
+        Array.</p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Data Block Address</p></td>
+	  <td>
+	    <p>The address of the data block in the Fixed Array.
+	    </p>
+	  </td>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the header.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
     <div align="center">
       <table class="format">
         <caption>
-          <b>Symbol Table Message</b>
+            Layout: Fixed Array Data Block
         </caption>
 
         <tr>
-          <th width="25%">byte</th>
-          <th width="25%">byte</th>
-          <th width="25%">byte</th>
-          <th width="25%">byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
         </tr>
 
         <tr>
-          <td colspan="4"><br />v1 B-tree Address<sup>O</sup><br /><br /></td>
+          <td colspan="4">Signature</td>
         </tr>
-
+          
         <tr>
-          <td colspan="4"><br />Local Heap Address<sup>O</sup><br /><br /></td>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
         </tr>
-      </table>
 
-      <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
-      </table>
-
-    </div>
+          <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
+        </tr>
 
-    <br />
-    <div align="center">
-      <table class="desc">
         <tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
+          <td colspan="4"><br />Page Bitmap <em>(variable size and 
+          optional)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>v1 B-tree Address</p></td>
-          <td><p>This value is the address of the v1 B-tree containing the
-            symbol table entries for the group.</p></td>
+          <td colspan="4"><br />Elements <em>(variable size and 
+          optional)</em><br /><br /></td>
         </tr>
 
         <tr>
-          <td><p>Local Heap Address</p></td>
-          <td><p>This value is the address of the local heap containing
-            the link names for the symbol table entries for the group.</p></td>
+          <td colspan="4">Checksum</td>
         </tr>
-      </table>
-    </div>
-    
-<br />
-<h4><a name="ModificationTimeMessage">IV.A.2.s. The Object 
-Modification Time Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Object 
-      Modification Time</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0012</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>The object modification time is a timestamp which indicates 
-      the time of the last modification of an object. The time is 
-      updated when any object header message changes according to 
-      the system clock where the change was posted.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  Modification Time Message
-	</caption>
-
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td colspan="3">Reserved (zero)</td>
-	</tr>
+      </table>
 
-	<tr>
-	  <td colspan="4">Seconds After UNIX Epoch</td>
-	</tr>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
+
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fixed Array Data Block
+        </caption>
 	<tr>
-          <th width="30%">Field Name</th>
+          <th width="40%">Field Name</th>
           <th>Description</th>
-	</tr>
-
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number is used for changes in the format of Object Modification Time
-	      and is described here:
-	     <table class="list">
-		<tr>
-		  <th width="20%" align="center">Version</th>
-		  <th width="80%" align="left">Description</th>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>0</code></td>
-		  <td>Never used.</td>
-		</tr>
-
-		<tr>
-		  <td align="center"><code>1</code></td>
-		  <td>Used by Version 1.6.1 and after of the library to encode time.  In
-		    this version, the time is the seconds after Epoch.</td>
-		</tr>
-	      </table></p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Seconds After UNIX Epoch</p></td>
-	  <td><p>A 32-bit unsigned integer value that stores the number of
-            seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970,
-            Coordinated Universal Time.</p></td>
-	</tr>
-      </table>
-    </div>
-    
-<br />
-<h4><a name="BtreeKValuesMessage">IV.A.2.t. The B-tree 
-‘K’ Values Message</a></h4>
-
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> B-tree 
-      ‘K’ Values</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0013</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>This message retrieves non-default ‘K’ values 
-      for internal and leaf nodes of a group or indexed storage v1 
-      B-trees. This message is <em>only</em> found in the superblock 
-      extension.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
-    <div align="center">
-      <table class="format">
-	<caption>
-	  B-tree ‘K’ Values Message
-	</caption>
-
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-	  <td colspan="2">Indexed Storage Internal Node K</td>
-          <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>FADB</code>” 
+            is used to indicate the beginning of a Fixed Array data 
+            block. This gives file consistency checking utilities a 
+            better chance of reconstructing a damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
 
 	<tr>
-	  <td colspan="2">Group Internal Node K</td>
-	  <td colspan="2">Group Leaf Node K</td>
-	</tr>
-      </table>
-    </div>
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The ID for identifying the client of the
+                Fixed Array:
 
-    <br />
-    <div align="center">
-      <table class="desc">
-	<tr>
-          <th width="30%">Field Name</th>
-          <th>Description</th>
-	</tr>
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes
-            version 0.</p>
-	  </td>
-	</tr>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table>
+            </p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Indexed Storage Internal Node K</p></td>
-	  <td><p>This is the node ‘K’ value for each internal node of an
-                indexed storage v1 B-tree.  See the description of this field
-                in version 0 and 1 of the superblock as well the section on
-                v1 B-trees.
-	      </p>
+        <tr>
+          <td><p>Header Address</p></td>
+	  <td>
+	    <p>The address of the Fixed Array header. Principally used 
+        for file integrity checking.
+            </p>
 	  </td>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Group Internal Node K</p></td>
-	  <td><p>This is the node ‘K’ value for each internal node of a group 
-                v1 B-tree.  See the description of this field in version 0 and
-                1 of the superblock as well as the section on v1 B-trees.
-	      </p>
-	  </td>
+	  <td><p>Page Bitmap</p></td>
+	  <td><p>A bitmap indicating which data block pages are initialized.</p>
+	      <p>Exists only if the data block is paged.</p></td>
 	</tr>
-
+	
 	<tr>
-	  <td><p>Group Leaf Node K</p></td>
-	  <td><p>This is the node ‘K’ value for each leaf node of a group v1
-                B-tree.  See the description of this field in version 0 and 1
-                of the superblock as well as the section on v1 B-trees.
-	      </p>
+	  <td><p>Elements</p></td>
+	  <td>
+	    <p>Contains the elements stored in the data block 
+        and exists only if the data block is not paged.
+	    There are two element types:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td><a href="#FaNonFilterChunk">Non-filtered 
+                      dataset chunks</i></a>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td><a href="#FaFilterChunk">Filtered dataset 
+                      chunks</i></a>
+                      </td>
+                    </tr>
+                </table>
+	    </p>
 	  </td>
 	</tr>
 
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the Fixed Array data block.</p>
+          </td>
+        </tr>
+
       </table>
     </div>
-    
-<br />
-<h4><a name="DrvInfoMessage">IV.A.2.u. The Driver Info 
-Message</a></h4>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Driver 
-      Info</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0014</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    
-    <tr><td>
-    <b>Description:</b></td>
-      <td>This message contains information needed by the file driver 
-      to reopen a file. This message is <em>only</em> found in the 
-      superblock extension: see the <a href="#SuperblockExt"> 
-      “Disk Format: Level 0C - Superblock Extension”</a> 
-      section for more information. For more information on the fields 
-      in the driver info message, see the <a href="#DriverInfo"> 
-      “Disk Format : Level 0B - File Driver Info”</a> 
-      section; those who use the multi and family file drivers will 
-      find this section particularly helpful.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
+    <br />
+    <br />
+    <br />
     <div align="center">
       <table class="format">
-	<caption>
-	  Driver Info Message
-	</caption>
+        <caption><a name="FADataBlockPage">
+            Layout: Fixed Array Data Block Page</a>
+        </caption>
 
-	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	</tr>
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-	<tr>
-	  <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
-	<tr>
-	  <td colspan="4"><br />Driver Identification</td>
-	</tr>
+        <tr>
+          <td colspan="4"><br />Elements <em>(variable 
+          size)</em><br /><br /></td>
+        </tr>
 
-	<tr>
-	  <td colspan="2">Driver Information Size</td>
-          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
-	</tr>
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
 
-	<tr>
-	  <td colspan="4"><br /><br />Driver Information <em>(variable size)</em><br /><br /><br /></td>
-	</tr>
-	
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Fixed Array Data Block Page
+        </caption>
 	<tr>
-          <th width="30%">Field Name</th>
+          <th width="40%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes
-                version 0.</p>
-	  </td>
-	</tr>
+	  <td><p>Elements</p></td>
+	  <td>
+	    <p>Contains the elements stored in the data block page.
+	    There are two element types:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-	<tr>
-	<td><p>Driver Identification</p></td>
-	  <td><p>This is an eight-byte ASCII string without null termination which
-                identifies the driver.
-	      </p>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td><a href="#FaNonFilterChunk">Non-filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td><a href="#FaFilterChunk">Filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                </table>
+	    </p>
 	  </td>
 	</tr>
 
-	<tr>
-	  <td><p>Driver Information Size</p></td>
-	  <td><p>The size in bytes of the <em>Driver Information</em> field of this
-                message.</p>
-	  </td>
-	</tr>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for a Fixed Array data block page.</p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td><p>Driver Information</p></td>
-	  <td><p>Driver information is stored in a format defined by the file driver.</p>
-	  </td>
-	</tr>
       </table>
     </div>
-    
-<br />
-<h4><a name="AinfoMessage">IV.A.2.v. The Attribute Info 
-Message</a></h4>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Attribute 
-      Info</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0015</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>This message stores information about the attributes on an 
-      object, such as the maximum creation index for the attributes 
-      created and the location of the attribute storage when the 
-      attributes are stored “densely”.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
+    <br />
+    <br />
+    <br />
+    <a name="FaNonFilterChunk"></a>
     <div align="center">
       <table class="format">
-	<caption>
-	  Attribute Info Message
-	</caption>
+    <caption>
+        Layout: Data Block Element for Non-filtered Dataset Chunk
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -14311,138 +17830,53 @@ Message</a></h4>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Flags</td>
-	  <td colspan="2">Maximum Creation Index <em>(optional)</em></td>
-	</tr>
-	<tr>
-	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
-	</tr>
-	<tr>
-	  <td colspan="4"><br />Attribute Name v2 B-tree Address<sup>O</sup><br /><br /></td>
-	</tr>
-	<tr>
-	  <td colspan="4"><br />Attribute Creation Order v2 B-tree Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
-	
+
       </table>
 
       <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
-
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Block Element for Non-filtered Dataset Chunk
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
-	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes
-                version 0.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	<td><p>Flags</p></td>
-	  <td><p>This is the attribute index information flag with the
-                following definition:
-	      
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Bit</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
-
-                <tr>
-                  <td align="center"><code>0</code></td>
-                  <td>If set, creation order for attributes is tracked.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>If set, creation order for attributes is indexed.
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>2-7</code></td>
-                  <td>Reserved</td>
-                </tr>
-	    </table></p>
-            
-          </td>
-	</tr>
-
-	<tr>
-	  <td><p>Maximum Creation Index</p></td>
-	  <td><p>The is the maximum creation order index value for the
-                attributes on the object.</p>
-	      <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Fractal Heap Address</p></td>
-	  <td><p>This is the address of the fractal heap to store dense
-                attributes.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Attribute Name v2 B-tree Address</p></td>
-	  <td><p>This is the address of the version 2 B-tree to index the
-                names of densely stored attributes.</p>
-	  </td>
-	</tr>
-
-	<tr>
-	  <td><p>Attribute Creation Order v2 B-tree Address</p></td>
-	  <td><p>This is the address of the version 2 B-tree to index the
-                creation order of densely stored attributes.</p>
-	      <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
-	  </td>
+	<tr>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the dataset chunk in the file.
+              </p>
+          </td>
 	</tr>
 
       </table>
     </div>
-    
-<br />
-<h4><a name="RefCountMessage">IV.A.2.w. The Object Reference 
-Count Message</a></h4>
+<!--    </p> -->
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> Object Reference 
-      Count</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0016</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td><b>Description:</b></td>
-      <td>This message stores the number of hard links (in groups or 
-      objects) pointing to an object: in other words, its 
-      <em>reference count</em>.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
-    
+    <br />
+    <br />
+    <br />
+    <a name="FaFilterChunk"></a>
     <div align="center">
       <table class="format">
-	<caption>
-	  Object Reference Count
-	</caption>
+    <caption>
+        Layout: Data Block Element for Filtered Dataset Chunk
+    </caption>
 
 	<tr>
 	  <th width="25%">byte</th>
@@ -14452,127 +17886,442 @@ Count Message</a></h4>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-          <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td colspan="4">Reference count</td>
+	  <td colspan="4"><br />Chunk Size <em>(variable size; at most 
+      8 bytes)</em><br /><br /></td>
+	</tr>
+
+	<tr>
+	  <td colspan="4">Filter Mask</td>
 	</tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
 
     <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Block Element for Filtered Dataset Chunk
+    </caption>
 	<tr>
           <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>The version number for this message. This document describes
-            version 0.</p>
-	  </td>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the dataset chunk in the file.
+              </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td><p>Reference Count</p></td>
-	  <td><p>The unsigned 32-bit integer is the reference count for the 
-        object. This message is only present in “version 2” 
-        (or later) object headers, and if not present those object 
-        header versions, the reference count for the object is assumed 
-        to be 1.</p>
-	  </td>
+	  <td><p>Chunk Size</p></td>
+	  <td><p>The size of the dataset chunk in bytes.
+              </p>
+          </td>
+	</tr>
+
+	<tr>
+	  <td><p>Filter Mask</p></td>
+	  <td><p>Indicates the filter to skip for the dataset chunk. Each 
+      filter has an index number in the pipeline; if that filter is 
+      skipped, the bit corresponding to its index is set.
+              </p>
+          </td>
 	</tr>
 
       </table>
     </div>
-    
-<br />
-<h4><a name="FsinfoMessage">IV.A.2.x. The File Space Info 
-Message</a></h4>
 
-    <!-- start msgdesc table -->
-    <center>
-    <table class="msgdesc">
-    <tr><td colspan="2"><b>Header Message Name:</b> File Space 
-      Info</td></tr>
-    <tr><td colspan="2"><b>Header Message Type:</b> 0x0018</td></tr>
-    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
-    <tr><td colspan="2"><b>Status:</b> Optional; may not be 
-      repeated.</td></tr>
-    <tr><td>
-    <b>Description:</b></td>
-      <td>This message stores the file space management strategy (see 
-      description below) that the library uses in handling file space 
-      request for the file. It also contains the free-space section 
-      threshold used by the library’s free-space managers for 
-      the file. If the strategy is 1, this message also contains the 
-      addresses of the file’s free-space managers which track 
-      free space for each type of file space allocation. There are 
-      six basic types of file space allocation: superblock, B-tree, 
-      raw data, global heap, local heap, and object header. See the 
-      description of <a href="#FreeSpaceManager">Free-space 
-      Manager</a> as well the description of allocation types in 
-      <a href="#AppendixB">Appendix B</a>.</td></tr>
-    <tr><td colspan="2"><b>Format of Data:</b> See the tables 
-      below.</td></tr>
-    </table></center>
-    <!-- end msgdesc table -->
+    <a name="ExtensibleArray">
+    <h3>VII.D. The Extensible Array Index</h3></a>
+    
+    <p>The <i>Extensible Array</i> index can be used when the dataset 
+    fulfills the following condition:</p>
+    
+    <ul>
+    <li>only one dimension of unlimited extent</li>
+    </ul>
+    
+    <p>The Extensible Array (EA) is a data structure that is used as a 
+    chunk index in datasets where the dataspace has a single 
+    unlimited dimension. In other words, one dimension is set to 
+    <code>H5S_UNLIMITED</code>, and the other dimensions are any number 
+    of fixed-size dimensions. The idea behind the extensible array is 
+    that a particular data object can be located via a lightweight 
+    indexing structure of fixed depth for a given address space. This 
+    indexing structure requires only a few (2-3) file operations per 
+    element lookup and gives good cache performance. Unlike the B-tree 
+    structure, the extensible array is optimized for appends. Where a 
+    B-tree would always add at the rightmost node under these 
+    circumstances, either creating a deep tree (version 1) or requiring 
+    expensive rebalances to correct (version 2), the extensible array 
+    has already mapped out a pre-balanced internal structure. This 
+    optimized internal structure is instantiated as needed when chunk 
+    records are inserted into the structure.</p>
+    
+    
+    
+    <!-- 
+    
+    <p>A description of the rationale that leads to the present 
+    implementation of the extensible array can be found at 
+    <a href="https://svn.hdfgroup.org/hdf5doc/trunk/projects/1_10_alpha/ReviseChunks/skip_lists">
+    https://svn.hdfgroup.org/hdf5doc/trunk/projects/1_10_alpha/ReviseChunks/skip_lists</a>.
+    </p>
+    
+    <p>The current implementation differs from the data structure 
+    described in that reference in some ways, but the basic idea is the 
+    same.</p>
+    
+    -->
+    
+    
+    
+    <p>An Extensible Array consists of a header, an index block, 
+    secondary blocks, data blocks, and (optional) data block pages. The 
+    general scheme is that the index block is used to reference a 
+    secondary block, which is, in turn, used to reference the data block 
+    page where the chunk information is stored. The data blocks will 
+    be paged for efficiency when their size passes a threshold value. 
+    These pages are laid out contiguously on the disk after the data 
+    block, are initialized as needed, and are tracked via bitmaps 
+    stored in the secondary block. The number of secondary and data 
+    blocks/pages in a chunk index varies as they are allocated as 
+    needed and the first few are (conceptually) stored in parent 
+    elements as an optimization.</p>
     
     <div align="center">
       <table class="format">
-	<caption>
-	  File Space Info
-	</caption>
+        <caption>
+            Layout: Extensible Array Header
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
+
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td>Element Size</td>
+          <td>Max Nelmts Bits</td>
+	</tr>
 
 	<tr>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
-	  <th width="25%">byte</th>
+          <td>Index Blk Elmts</td>
+          <td>Data Blk Min Elmts</td>
+          <td>Secondary Blk Min Data Ptrs</td>
+          <td>Max Data Blk Page Nelmts Bits</td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Num Secondary Blks<sup>L</sup><br /><br /></td>
+        </tr>
+        <tr>
+          <td colspan="4"><br />Secondary Blk Size<sup>L</sup><br /><br /></td>
+        </tr>
+        <tr>
+          <td colspan="4"><br />Num Data Blks<sup>L</sup><br /><br /></td>
+        </tr>
+        <tr>
+          <td colspan="4"><br />Data Blk Size<sup>L</sup><br /><br /></td>
+        </tr>
+        <tr>
+          <td colspan="4"><br />Max Index Set<sup>L</sup><br /><br /></td>
+        </tr>
+        <tr>
+          <td colspan="4"><br />Num Elements<sup>L</sup><br /><br /></td>
+        </tr>
+          
+        <tr>
+          <td colspan="4"><br />Index Block Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘L’ in the above table are
+            of the size specified in the <a href="#SizeOfLengthsV0">Size 
+            of Lengths</a> field in the superblock.)
+            </td></tr>
+        <tr>
+            <td> </td>
+            <td>
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
+
+    </div>
+
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Extensible Array Header
+        </caption>
+	<tr>
+          <th width="40%">Field Name</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>EAHD</code>” 
+            is used to indicate the beginning of an Extensible Array 
+            header. This gives file consistency checking utilities a 
+            better chance of reconstructing a damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
+
+	<tr>
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The ID for identifying the client of the
+                Fixed Array:
+
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table>
+            </p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Element Size</p></td>
+	  <td>
+	    <p>The size in bytes of an element in the Extensible Array.
+            </p>
+	  </td>
+        </tr>
+
+	<tr>
+	  <td><p>Max Nelmts Bits</p></td>
+	  <td>
+            <p>The number of bits needed to store the 
+            maximum number of elements in the Extensible Array.</p>
+          </td>
+	</tr>
+	
+	<tr>
+	  <td><p>Index Blk Elmts</p></td>
+	  <td>
+	    <p>The number of elements to store in the index block.
+	    </p>
+	  </td>
 	</tr>
 
 	<tr>
-	  <td>Version</td>
-	  <td>Strategy</td>
-          <td colspan="2">Threshold<sup>L</sup></td>
+	  <td><p>Data Blk Min Elmts</p></td>
+	  <td>
+	    <p>The minimum number of elements per data block.
+	    </p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Secondary Blk Min Data Ptrs</p></td>
+	  <td>
+	    <p>The minimum number of data block pointers for a 
+	    secondary block.
+	    </p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Max Dblk Page Nelmts Bits</p></td>
+	  <td>
+	    <p>The number of bits needed to store the maximum number
+	    of elements in a data block page.
+	    </p>
+	  </td>
+	</tr>
+
+	<tr>
+	  <td><p>Num Secondary Blks</p></td>
+	  <td>
+	    <p>The number of secondary blocks created.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Super-block Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Secondary Blk Size</p></td>
+	  <td>
+	    <p>The size of the secondary blocks created.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">B-tree Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Num Data Blks</p></td>
+	  <td>
+	    <p>The number of data blocks created.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Raw Data Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Data Blk Size</p></td>
+	  <td>
+	    <p>The size of the data blocks created.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Global Heap Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Max Index Set</p></td>
+	  <td>
+	    <p>The maximum index set.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Local Heap Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Num Elmts</p></td>
+	  <td>
+	    <p>The number of elements realized.
+	    </p>
+	  </td>
 	</tr>
+
 	<tr>
-	  <td colspan="4">Object Header Free-space Manager Address<sup>O</sup></td>
+	  <td><p>Index Block Address</p></td>
+	  <td>
+	    <p>The address of the index block.
+	    </p>
+	  </td>
 	</tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the header.</p>
+          </td>
+        </tr>
+
       </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Extensible Array Index Block
+        </caption>
 
-      <table class="note">
         <tr>
-        <td width="60%"> </td>
-        <td width="40%">
-            (Items marked with an ‘O’ in the above table are of the size
-	    specified in “Size of Offsets” field in the superblock.)
-        </td></tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
+
         <tr>
-        <td> </td>
-        <td>
-            (Items marked with an ‘L’ in the above table are of the size
-	    specified in “Size of Lengths” field in the superblock.)
-        </td></tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Elements <em>(variable size and 
+          optional)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Data Block Addresses <em>(variable 
+          size and optional)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Secondary Block Addresses <em>(variable 
+          size and optional)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
 
     </div>
@@ -14580,369 +18329,708 @@ Message</a></h4>
     <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Extensible Array Index Block
+        </caption>
 	<tr>
-          <th width="30%">Field Name</th>
+          <th width="40%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
+
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>EAIB</code>” 
+            is used to indicate the beginning of an Extensible Array 
+            Index Block. This gives file consistency checking utilities 
+            a better chance of reconstructing a damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
 
 	<tr>
-	  <td><p>Version</p></td>
-	  <td><p>This is the version number of this message. This document describes
-            version 0.</p>
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The client ID for identifying the user of the
+                Extensible Array:
+
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table>
+            </p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Header Address</p></td>
+	  <td>
+	    <p>The address of the Extensible Array header. Principally 
+        used for file integrity checking.</p>
 	  </td>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Strategy</p></td>
-	  <td><p>This is the  file space management strategy for the file.
-		 There are four types of strategies:
-            <table class="list">
-                <tr>
-                  <th width="20%" align="center">Value</th>
-                  <th width="80%" align="left">Description</th>
-                </tr>
+	  <td><p>Elements</p></td>
+	  <td>
+	    <p>Contains the elements that are stored directly in 
+        the index block. An optimization to avoid unnecessary 
+        secondary blocks. 
+        <br />
+        <br />
+        There are two element types:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-                <tr>
-                  <td align="center"><code>1</code></td>
-                  <td>With this strategy, the HDF5 Library’s free-space managers track the
-		      free space that results from the manipulation of HDF5 objects
-		      in the HDF5 file.  The free space information is saved when the
-		      file is closed, and reloaded when the file is reopened.
-		    <br />
-		      When space is needed for file metadata or raw data, 
-		      the HDF5 Library first requests space from the library’s free-space 
-		      managers. If the request is not satisfied, the library requests space 
-		      from the aggregators. If the request is still not satisfied, 
-		      the library requests space from the virtual file driver. 
-		      That is, the library will use all of the mechanisms for allocating
-		      space.
-                  </td>
-                </tr>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                </table>
+	    </p>
+	  </td>
+	</tr>
 
-                <tr>
-                  <td align="center"><code>2</code></td>
-                  <td>This is the HDF5 Library’s default file space management strategy. 
-		      With this strategy, the library’s free-space managers track the free space
-		      that results from the manipulation of HDF5 objects in the HDF5 file.
-		      The free space information is NOT saved when the file is closed and
-		      the free space that exists upon file closing becomes unaccounted
-		      space in the file.
-		    <br />
-		      As with strategy #1, the library will try all of the mechanisms 
-		      for allocating space.  When space is needed for file metadata or 
-		      raw data, the library first requests space from the free-space
-		      managers.  If the request is not satisfied, the library requests
-		      space from the aggregators.  If the request is still not satisfied,
-		      the library requests space from the virtual file driver.
-                  </td>
-                </tr>
+        <tr>
+          <td><p>Data Block Addresses</p></td>
+          <td>
+            <p>Contains the addresses of the data blocks 
+            that are stored directly in the Index Block. An 
+            optimization to avoid unnecessary secondary blocks.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Secondary Block Addresses</p></td>
+          <td>
+            <p>Contains the addresses of the secondary 
+            blocks.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the Extensible Array Index Block.</p>
+          </td>
+        </tr>
+
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Extensible Array Secondary Block
+        </caption>
+
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
+
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Block Offset <em>(variable 
+          size)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Page Bitmap <em>(variable size and 
+          optional)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4"><br />Data Block Addresses <em>(variable 
+          size and optional)</em><br /><br /></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
 
-                <tr>
-                  <td align="center"><code>3</code></td>
-                  <td>With this strategy, the HDF5 Library does not track free space that results
-		      from the manipulation of HDF5 objects in the HDF5 file and
-		      the free space becomes unaccounted space in the file.
-		    <br />
-		      When space is needed for file metadata or raw data,
-		      the library first requests space from the aggregators. 
-		      If the request is not satisfied, the library requests space from 
-		      the virtual file driver. 
-                  </td>
-                </tr>
-                <tr>
-                  <td align="center"><code>4</code></td>
-                  <td>With this strategy, the HDF5 Library does not track free space that results
-		      from the manipulation of HDF5 objects in the HDF5 file and
-		      the free space becomes unaccounted space in the file.
-		    <br />
-		      When space is needed for file metadata or raw data,
-		      the library requests space from the virtual file driver. 
-                  </td>
-                </tr>
-            </table></p>
-	  </td>
-	</tr>
+      </table>
 
-	<tr>
-	  <td><p>Threshold</p></td>
-	  <td><p>This is the free-space section threshold.
-	    The library’s free-space managers will track only 
-        free-space sections with size greater than or equal to 
-        <em>threshold</em>. The default is to track free-space 
-        sections of all sizes.</p>
-	  </td>
-	</tr>
-	<tr>
-	  <td><p>Superblock Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_SUPER allocation type.
-            </p>
-	  </td>
-	</tr>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
 
-	<tr>
-	  <td><p>B-tree Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_BTREE allocation type.
-            </p>
-	  </td>
-	</tr>
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Extensible Array Secondary Block
+        </caption>
 	<tr>
-	  <td><p>Raw Data Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_DRAW allocation type.
+          <th width="40%">Field Name</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>EASB</code>” 
+            is used to indicate the beginning of an Extensible Array 
+            Secondary Block. This gives file consistency checking utilities 
+            a better chance of reconstructing a damaged file.
             </p>
-	  </td>
-	</tr>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
 
 	<tr>
-	  <td><p>Global Heap Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_GHEAP allocation type.
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The ID for identifying the client of the
+                Extensible Array:
+
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table>
             </p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Header Address</p></td>
+	  <td>
+	    <p>The address of the Extensible Array header. Principally 
+        used for file integrity checking.</p>
 	  </td>
-	</tr>
+        </tr>
 
-	<tr>
-	  <td><p>Local Heap Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_LHEAP allocation type.
+        <tr>
+          <td><p>Block Offset</p></td>
+	  <td>
+	    <p>Stores the offset of the block in the array.
             </p>
 	  </td>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td><p>Object Header Free-space Manager Address</p></td>
-	  <td><p>This is the address of the free-space manager for 
-        H5FD_MEM_OHDR allocation type.
-            </p>
-	  </td>
+	  <td><p>Page Bitmap</p></td>
+	  <td>
+            <p>A bitmap indicating which
+            data block pages are initialized.
+	    <p>
+	    Exists only if the data block is paged.
+          </td>
 	</tr>
+	
+        <tr>
+          <td><p>Data Block Addresses</p></td>
+          <td>
+            <p>Contains the addresses of the data blocks 
+            referenced by this secondary block.</p>
+          </td>
+        </tr>
+
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the Extensible Array 
+            Secondary Block.</p>
+          </td>
+        </tr>
+
       </table>
     </div>
+
+    <br />
     <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Extensible Array Data Block
+        </caption>
 
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
-<br />
-<h3><a name="DataStorage">
-IV.B. Disk Format: Level 2B - Data Object Data Storage</a></h3>
+        <tr>
+          <td colspan="4">Signature</td>
+        </tr>
+          
+        <tr>
+          <td>Version</td>
+          <td>Client ID</td>
+          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted 
+          only to align table nicely</em></td>
+        </tr>
 
-<p>The data for an object is stored separately from its header
-    information in the file and may not actually be located in the HDF5 file
-    itself if the header indicates that the data is stored externally.  The
-    information for each record in the object is stored according to the
-    dimensionality of the object (indicated in the dataspace header message).
-    Multi-dimensional array data is stored in C order; in other words, the
-    “last” dimension changes fastest.</p>
+        <tr>
+          <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
+        </tr>
 
-<p>Data whose elements are composed of atomic datatypes are stored in IEEE
-    format, unless they are specifically defined as being stored in a different
-    machine format with the architecture-type information from the datatype
-    header message.  This means that each architecture will need to [potentially]
-    byte-swap data values into the internal representation for that particular
-    machine.</p>
+        <tr>
+          <td colspan="4"><br />Block Offset <em>(variable 
+          size)</em><br /><br /></td>
+        </tr>
 
-<p> Data with a variable-length datatype is stored in the global heap
-    of the HDF5 file.  Global heap identifiers are stored in the 
-    data object storage.</p>
+        <tr>
+          <td colspan="4"><br />Elements <em>(variable size and 
+          optional)</em><br /><br /></td>
+        </tr>
 
-<p>Data whose elements are composed of reference datatypes are stored in
-    several different ways depending on the particular reference type involved.
-    Object pointers are just stored as the offset of the object header being
-    pointed to with the size of the pointer being the same number of bytes as
-    offsets in the file.</p>
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
 
-<p>Dataset region references are stored as a heap-ID which points to 
-the following information within the file-heap: an offset of the object 
-pointed to, number-type information (same format as header message), 
-dimensionality information (same format as header message), sub-set start 
-and end information (in other words, a coordinate location for each), 
-and field start and end names (in other words, a [pointer to the] string 
-indicating the first field included and a [pointer to the] string name 
-for the last field).  </p>
+      </table>
 
-<p>Data of a compound datatype is stored as a contiguous stream of the items
-    in the structure, with each item formatted according to its datatype.</p>
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
+      </table>
 
+    </div>
 
+    <br />
+    <div align="center">
+      <table class="desc">
+        <caption>
+            Fields: Extensible Array Data Block
+        </caption>
+	<tr>
+          <th width="40%">Field Name</th>
+          <th>Description</th>
+        </tr>
 
-<br />
-<br />
-<hr />
-<h2><a name="AppendixA">
-V. Appendix A: Definitions</a></h2>
+        <tr>
+          <td><p>Signature</p></td>
+          <td>
+            <p>The ASCII character string “<code>EADB</code>” 
+            is used to indicate the beginning of an Extensible Array 
+            data block. This gives file consistency checking utilities 
+            a better chance of reconstructing a damaged file.
+            </p>
+          </td>
+        </tr>
+          
+        <tr>
+          <td><p>Version</p></td>
+          <td>
+            <p>This document describes version 0.</p>
+          </td>
+        </tr>
 
-<p>Definitions of various terms used in this document are included in 
-this section.</p>
+	<tr>
+          <td><p>Client ID</p></td>
+          <td>
+            <p>The ID for identifying the client of the
+                Extensible Array:
+
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td>Non-filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td>Filtered dataset chunks
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>2+</code></td>
+                      <td>Reserved.
+                      </td>
+                    </tr>
+                </table>
+            </p>
+          </td>
+        </tr>
 
-    <div align="center">
-    <table class="glossary">
-    <tr>
-        <th width="20%">Term</th>
-        <th>Definition</th>
-    </tr>
+        <tr>
+          <td><p>Header Address</p></td>
+	  <td>
+	    <p>The address of the Extensible Array header. Principally 
+        used for file integrity checking.
+            </p>
+	  </td>
+        </tr>
 
-    <tr>
-        <td>Undefined Address</td>
-        <td>The <a name="UndefinedAddress">undefined 
-        address</a> for a file is a file address with all bits 
-        set: in other words, <code>0xffff...ff</code>.</td>
+	<tr>
+	  <td><p>Block Offset</p></td>
+	  <td>
+            <p>The offset of the block in the array.
+          </td>
 	</tr>
-
+	
 	<tr>
-	  <td>Unlimited Size</td>
-	  <td>The <a name="UnlimitedDim">unlimited size</a> 
-      for a size is a value with all bits set: in other words, 
-      <code>0xffff...ff</code>.</td>
+	  <td><p>Elements</p></td>
+	  <td>
+	    <p>Contains the elements stored in the data block and
+		exists only if the data block is not paged.
+        <br />
+        <br />
+	    There are two element types:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
+
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                </table>
+	    </p>
+	  </td>
 	</tr>
 
-    </table>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for the Extensible Array data block.</p>
+          </td>
+        </tr>
+
+      </table>
     </div>
+    
+    <br />
+    <br />
+    <br />
+    <div align="center">
+      <table class="format">
+        <caption>
+            Layout: Extensible Array Data Block Page
+        </caption>
 
+        <tr>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+          <th>byte</th>
+        </tr>
 
+        <tr>
+          <td colspan="4"><br />Elements <em>(variable 
+          size)</em><br /><br /></td>
+        </tr>
 
-<br />
-<br />
-<hr />
-<h2><a name="AppendixB">
-VI. Appendix B: File Memory Allocation Types</a></h2>
+        <tr>
+          <td colspan="4">Checksum</td>
+        </tr>
 
-<p>There are six basic types of file memory allocation as follows:
-</p>
+      </table>
+    </div>
+
+    <br />
     <div align="center">
       <table class="desc">
+        <caption>
+            Fields: Extensible Array Data Block Page
+        </caption>
 	<tr>
-          <th width="30%">Basic Allocation Type</th>
+          <th width="40%">Field Name</th>
           <th>Description</th>
-	</tr>
+        </tr>
 
 	<tr>
-	  <td>H5FD_MEM_SUPER</td>
-	  <td>File memory allocated for <em>Superblock.</em></td>
-	</tr>
+	  <td><p>Elements</p></td>
+	  <td>
+	    <p>Contains the elements stored in the data block 
+        page.</p>
+        <p>
+	    There are two element types:
+                <table class="list">
+                    <tr>
+                      <th width="20%" align="center">ID</th>
+                      <th width="80%" align="left">Description</th>
+                    </tr>
 
-	<tr>
-	  <td>H5FD_MEM_BTREE</td>
-	  <td>File memory allocated for <em>B-tree.</em></td>
+                    <tr>
+                      <td align="center"><code>0</code></td>
+                      <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                    <tr>
+                      <td align="center"><code>1</code></td>
+                      <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
+                      </td>
+                    </tr>
+                </table>
+	    </p>
+	  </td>
 	</tr>
 
-	<tr>
-	  <td>H5FD_MEM_DRAW</td>
-	  <td>File memory allocated for raw data.</td>
-	</tr>
+        <tr>
+          <td><p>Checksum</p></td>
+          <td>
+            <p>The checksum for an Extensible Array data block 
+            page.</p>
+          </td>
+        </tr>
 
-	<tr>
-	  <td>H5FD_MEM_GHEAP</td>
-	  <td>File memory allocated for <em>Global Heap.</em></td>
-	</tr>
+      </table>
+    </div>
+
+    <br />
+    <br />
+    <br />
+    <a name="EaNonFilterChunk"></a>
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Data Block Element for Non-filtered Dataset Chunk
+    </caption>
 
 	<tr>
-	  <td>H5FD_MEM_LHEAP</td>
-	  <td>File memory allocated for <em>Local Heap.</em></td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_OHDR</td>
-	  <td>File memory allocated for <em>Object Header.</em></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
+
+      </table>
+
+      <table class="note">
+        <tr><td>
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
-    
-<p>There are other file memory allocation types that are mapped to the
-above six basic allocation types because they are similar in nature.
-The mapping is listed in the following table:
-</p>
-    
+
+    <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Block Element for Non-filtered Dataset Chunk
+    </caption>
 	<tr>
-          <th width="30%">Basic Allocation Type</th>
-          <th>Mapping of Allocation Types to Basic Allocation Types</th>
+          <th width="30%">Field Name</th>
+          <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_SUPER</td>
-	  <td><em>none</em></td>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the dataset chunk in the file.
+              </p>
+          </td>
 	</tr>
 
-	<tr>
-	  <td>H5FD_MEM_BTREE</td>
-	  <td>H5FD_MEM_SOHM_INDEX</td>
-	</tr>
+      </table>
+    </div>
+    </p>
+
+    <br />
+    <br />
+    <br />
+    <a name="EaFilterChunk"></a>
+    <div align="center">
+      <table class="format">
+    <caption>
+        Layout: Data Block Element for Filtered Dataset Chunk
+    </caption>
 
 	<tr>
-	  <td>H5FD_MEM_DRAW</td>
-	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
+	  <th width="25%">byte</th>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_GHEAP</td>
-	  <td><em>none</em></td>
+	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_LHEAP</td>
-	  <td>H5FD_MEM_FHEAP_DBLOCK, H5FD_MEM_FSPACE_SINFO</td>
+	  <td colspan="4"><br />Chunk Size<em> (variable size; at 
+      most 8 bytes)</em><br /><br /></td>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_OHDR</td>
-	  <td>H5FD_MEM_FHEAP_HDR, H5FD_MEM_FHEAP_IBLOCK, H5FD_MEM_FSPACE_HDR, H5FD_MEM_SOHM_TABLE</td>
+	  <td colspan="4">Filter Mask</td>
 	</tr>
+
+      </table>
+
+      <table class="note">
+        <tr>
+            <td width="60%"> </td>
+            <td width="40%">
+            (Items marked with an ‘O’ in the above table are
+            of the size specified in the <a href="#SizeOfOffsetsV0">Size 
+            of Offsets</a> field in the superblock.)
+            </td></tr>
       </table>
     </div>
-    
-<p>Allocation types that are mapped to basic allocation types are described below:
-</p>
-    
+
+    <br />
     <div align="center">
       <table class="desc">
+    <caption>
+        Fields: Data Block Element for Filtered Dataset Chunk
+    </caption>
 	<tr>
-          <th width="30%">Allocation Type</th>
+          <th width="30%">Field Name</th>
           <th>Description</th>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_FHEAP_HDR</td>
-	  <td>File memory allocated for <em>Fractal Heap Header.</em></td>
-	</tr>
-
-	<tr>
-	  <td>H5FD_MEM_FHEAP_DBLOCK</td>
-	  <td>File memory allocated for <em>Fractal Heap Direct Blocks.</em></td>
-	</tr>
-
-	<tr>
-	  <td>H5FD_MEM_FHEAP_IBLOCK</td>
-	  <td>File memory allocated for <em>Fractal Heap Indirect Blocks.</em></td>
+	  <td><p>Address</p></td>
+	  <td><p>The address of the dataset chunk in the file.
+              </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
-	  <td>File memory allocated for huge objects in the fractal heap.</td>
+	  <td><p>Chunk Size</p></td>
+	  <td><p>The size of the dataset chunk in bytes.
+              </p>
+          </td>
 	</tr>
 
 	<tr>
-	  <td>H5FD_MEM_FSPACE_HDR</td>
-	  <td>File memory allocated for <em>Free-space Manager Header.</em></td>
+	  <td><p>Filter Mask</p></td>
+	  <td><p>Indicates the filter to skip for the dataset chunk. 
+      Each filter has an index number in the pipeline; if that 
+      filter is skipped, the bit corresponding to its index is set.
+              </p>
+          </td>
 	</tr>
 
-	<tr>
-	  <td>H5FD_MEM_FSPACE_SINFO</td>
-	  <td>File memory allocated for <em>Free-space Section List</em> of the free-space manager.</td>
-	</tr>
-	<tr>
-	  <td>H5FD_MEM_SOHM_TABLE</td>
-	  <td>File memory allocated for <em>Shared Object Header Message Table.</em></td>
-	</tr>
-	<tr>
-	  <td>H5FD_MEM_SOHM_INDEX</td>
-	  <td>File memory allocated for <em>Shared Message Record List.</em></td>
-	</tr>
       </table>
     </div>
-    <br />
+
+    <a name="AppendV2Btrees">
+    <h3>VII.E. The Version 2 B-trees Index</h3></a>
+    
+    <p>The <i>Version 2 B-trees</i> index can be used when the dataset 
+    fulfills the following condition:</p>
+    
+    <ul>
+    <li>more than one dimension of unlimited extent</li>
+    </ul>
+    
+    <p>Version 2 B-trees can be used to index various objects in the 
+    library. See <a href="#V2Btrees">“Version 2 B-trees”</a> 
+    for more information. The B-tree types <a href="#V2BtType10">10</a> 
+    and <a href="#V2BtreesType11">11</a> record layouts are for 
+    indexing dataset chunks.</p>
+<br />
+<br />
+<br />
+
 
 <!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" -->
 <hr />
@@ -14968,7 +19056,7 @@ The mapping is listed in the following table:
 <?php include("./ed_libs/Footer.htm"); ?>
 
 <!-- hhmts start -->
-Last modified: 24 September 2015
+Last modified: 25 April 2016
 <!-- hhmts end -->
 
 </body>
diff --git a/html/HL/RM_H5LT.html b/html/HL/RM_H5LT.html
index 5ac613f..4ff2af4 100755
--- a/html/HL/RM_H5LT.html
+++ b/html/HL/RM_H5LT.html
@@ -1739,7 +1739,7 @@ end subroutine h5ltread_dataset_float_f
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 21 January 2013
+      Last modified: 11 May 2016
       </i></font></div>
 
   <dt style="background-color: #CCCCFF"><strong>Name:</strong>       <a name="H5LTread_dataset_double">     H5LTread_dataset_double</a> </dt>
@@ -1779,7 +1779,7 @@ end subroutine h5ltread_dataset_float_f
   <dt><strong>Fortran90 Interface:</strong>  h5ltread_dataset_double_f</dt>
       <dd>This subroutine can read a dataset of up to seven (7) dimensions.
       <pre>
-subroutine h5ltread_dataset_double_f(loc_id, dset_name, type_id, buf, &
+subroutine h5ltread_dataset_double_f(loc_id, dset_name, buf, &
                                      dims, errcode)
   implicit none
   integer(HID_T), intent(IN) :: loc_id           ! file or group identifier 
@@ -3673,7 +3673,7 @@ In the
 <!--
 document.writeln('\
 <address> \
-  Last modified: 29 January 2013<br> \
+  Last modified: 11 May 2016<br> \
 </address> \
 ');
 -->
diff --git a/html/HL/RM_H5PT.html b/html/HL/RM_H5PT.html
index 9477829..469fa0d 100755
--- a/html/HL/RM_H5PT.html
+++ b/html/HL/RM_H5PT.html
@@ -1,4 +1,4 @@
- </dd><html>
+<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
@@ -124,6 +124,7 @@ The following functions are part of the HDF5 Packet Table API.  </p>
     <td width="50%" valign="top">
       <p align="left"><i>Creation and Opening</i>
       <ul>
+        <li><a href="#H5PTcreate">H5PTcreate</a></li>
         <li><a href="#H5PTcreate_fl">H5PTcreate_fl</a></li>
 <!--    <li><a href="#H5PTcreate_vl">H5PTcreate_vl</a></li>               -->
         <li><a href="#H5PTopen">H5PTopen</a></li>
@@ -146,37 +147,112 @@ The following functions are part of the HDF5 Packet Table API.  </p>
       <ul>
         <li><a href="#H5PTread_packets">H5PTread_packets</a></li>
         <li><a href="#H5PTget_next">H5PTget_next</a></li>
+        <li><a href="#H5PTget_dataset">H5PTget_dataset</a></li>
+        <li><a href="#H5PTget_type">H5PTget_type</a></li>
 
       </ul>
       <p align="left"><i>Query</i>
       <ul>
         <li><a href="#H5PTget_num_packets">H5PTget_num_packets</a></li>
         <li><a href="#H5PTis_valid">H5PTis_valid</a></li>
-<!--    <li><a href="#H5PTis_varlen">H5PTis_varlen</a></li>               -->
+        <li><a href="#H5PTis_varlen">H5PTis_varlen</a></li>
       </ul>
-<!--  <p align="left"><i>Memory Management</i>
+      <p align="left"><i>Memory Management</i>
       <ul>
-        <li><a href="#H5PTfree_vlen_readbuff">H5PTfree_vlen_readbuff</a></li>
+        <li><a href="#H5PTfree_vlen_buff">H5PTfree_vlen_buff</a></li>
       </ul>
--->
+
     </td>
   </tr>
 </table>
 
 
 
+<br />
+<hr>
+<dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+  <a name="H5PTcreate">H5PTcreate</a> </dt>
+
+  <dt><strong>Signature:</strong> </dt>
+  <dl><dt><code><em>hid_t</em> H5PTcreate(<em>hid_t</em>  loc_id, 
+      <em>const char *</em> ptable_name, <em>hid_t</em> dtype_id, 
+      <em>hsize_t</em> chunk_size, <em>hid_t</em> plist_id)</code></dt>
+  </dl>
+
+  <dt><strong>Purpose:</strong> </dt>
+  <dd>Creates a packet table to store fixed-length or variable-length 
+  packets.</dd>
+
+  <dt><strong>Description:</strong> </dt>
+  <dd><code>H5PTcreate</code> creates and opens a packet table named 
+  <code>ptable_name</code> attached to the object specified by the 
+  identifier <code>loc_id</code>. The created packet table should be 
+  closed with <code>H5PTclose</code>, eventually. The datatype, 
+  <code>dtype_id</code>, may specify any datatype, including 
+  variable-length data. If <code>dtype_id</code> specifies a 
+  compound datatype, one or more fields in that compound type may be 
+  variable-length.</dd>
+
+  <dt><strong>Parameters:</strong> </dt>
+    <dl>
+    <dt><code><em>hid_t</em> loc_id</code> </dt>
+    <dd>IN: Identifier of the file or group to create the table within.</dd>
+    <dt><code><em>const char *</em> ptable_name</code> </dt>
+    <dd>IN: The name of the packet table to create.</dd>
+    <dt><code><em>hid_t</em> dtype_id</code> </dt>
+    <dd>IN: The datatype of the packet.</dd>
+    <dt><code><em>hsize_t</em> chunk_size</code> </dt>
+    <dd>IN: Chunk size, in number of table entries per chunk. Packet 
+    table datasets use HDF5 chunked storage to allow them to grow. 
+    This value allows the user to set the size of a chunk. The chunk 
+    size affects performance.</dd>
+    <dt><code><em>hid_t</em> plist_id</code> </dt>
+    <dd>IN: Identifier of the property list. Can be used to 
+    specify the compression of the packet table.</dd>
+  </dl>
+</dl>
+
+<dl>
+  <dt><strong>Returns:</strong> </dt>
+    <dd>Returns an identifier for the new packet table or 
+    <code>H5I_INVALID_HID</code> on error.</dd>
+</dl>
+
+<dl>
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced. </td>
+        </tr>
+        </table>
+    </dd>
+</dl>
+
+
+
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT " " -->
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTcreate_fl" -->
+<br />
 <hr>
 <dl>
-  <dt style="background-color: #CCCCFF"><strong>Name:</strong>        <a name="H5PTcreate_fl">H5PTcreate_fl</a> </dt>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+  <a name="H5PTcreate_fl">H5PTcreate_fl</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>hid_t</em>       H5PTcreate_fl( <em>hid_t</em>    loc_id,
-    <em>const char *</em>    dset_name, <em>hid_t</em> dtype_id, <em>hsize_t</em> 
-      chunk_size, <em>int</em> compression )</dt>
+  <dl><dt><code><em>hid_t</em> H5PTcreate_fl(<em>hid_t</em> loc_id,
+    <em>const char *</em> dset_name, <em>hid_t</em> dtype_id, 
+    <em>hsize_t</em> chunk_size, <em>int</em> compression)</code></dt>
 
   </dl>
   <dt><strong>Purpose:</strong> </dt>
@@ -196,19 +272,19 @@ The following functions are part of the HDF5 Packet Table API.  </p>
   <dt><strong>Parameters:</strong> </dt>
 
     <dl>
-    <dt><em>hid_t</em> <code>loc_id</code> </dt>
+    <dt><code><em>hid_t</em> loc_id</code> </dt>
     <dd>IN: Identifier of the file or group to create the table within. </dd>
-    <dt><em>const char *</em> <code>dset_name</code> </dt>
+    <dt><code><em>const char *</em> dset_name</code> </dt>
     <dd>IN: The name of the dataset to create. </dd>
-    <dt><em>hid_t </em><code>dtype_id</code> </dt>
+    <dt><code><em>hid_t</em> dtype_id</code> </dt>
     <dd>IN: The datatype of a packet. </dd>
-    <dt><em>hsize_t </em><code>chunk_size</code> </dt>
+    <dt><code><em>hsize_t</em> chunk_size</code> </dt>
     <dd>IN: Chunk size, in number of table entries per chunk.
             <br>
             Packet table datasets use HDF5 chunked storage to allow them to grow.  
             This value allows the user to set the size of a chunk.  The chunk size
             affects performance. </dd>
-    <dt><em>int</em> <code>compression</code> </dt>
+    <dt><code><em>int</em> compression</code> </dt>
     <dd>IN: Compression level, 
             a value of <code>0</code> through <code>9</code>.
             Level <code>0</code> is faster but offers the least compression;
@@ -226,14 +302,15 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 <!-- HTMLdoc CODING                     NEW PAGE -->
 <!-- HTMLdoc CODING                     HEADER RIGHT "H5PTcreate_vl" -->
 <!--
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTcreate_vl">H5PTcreate_vl</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>hid_t</em>       H5PTcreate_vl( <em>hid_t</em>    loc_id,
+  <dl><dt><code><em>hid_t</em>       H5PTcreate_vl(<em>hid_t</em>    loc_id,
     <em>const char</em>    *dset_name, <em>hsize_t</em>
-      chunk_size )</dt>
+      chunk_size)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -248,11 +325,11 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>loc_id</code> </dt>
+    <dt><code><em>hid_t</em> loc_id</code> </dt>
     <dd>IN: Identifier of the file or group to create the table within. </dd>
-    <dt><em>const char *</em><code>dset_name</code> </dt>
+    <dt><code><em>const char *</em> dset_name</code> </dt>
     <dd>IN: The name of the dataset to create. </dd>
-    <dt><em>hsize_t </em><code>chunk_size</code> </dt>
+    <dt><code><em>hsize_t</em> chunk_size</code> </dt>
     <dd>IN: Chunk size, in number of table entries per chunk.
             <br>
             Packet table datasets use HDF5 chunked storage to allow them to grow.  
@@ -269,13 +346,14 @@ The following functions are part of the HDF5 Packet Table API.  </p>
   
   <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTopen" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTopen">H5PTopen</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>hid_t</em>       H5PTopen( <em>hid_t</em>    loc_id,
-    <em>const char</em>    *dset_name )</dt>
+  <dl><dt><code><em>hid_t</em> H5PTopen(<em>hid_t</em> loc_id, 
+    <em>const char</em> *dset_name)</code></dt>
 
   </dl>
   <dt><strong>Purpose:</strong> </dt>
@@ -290,9 +368,10 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>loc_id</code> </dt>
-    <dd>IN: Identifier of the file or group within which the packet table can be found. </dd>
-    <dt><em>const char *</em><code>dset_name</code> </dt>
+    <dt><code><em>hid_t</em> loc_id</code> </dt>
+    <dd>IN: Identifier of the file or group within which the packet 
+    table can be found. </dd>
+    <dt><code><em>const char *</em> dset_name</code> </dt>
     <dd>IN: The name of the packet table to open. </dd>
   </dl>
 </dl>
@@ -304,12 +383,14 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTclose" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTclose">H5PTclose</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTclose( <em>hid_t</em>  table_id )</dt>
+  <dl><dt><code><em>herr_t</em> H5PTclose(<em>hid_t</em>  table_id)
+  </code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -321,7 +402,7 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table to be closed. </dd>
   </dl>
 </dl>
@@ -333,13 +414,14 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTappend" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTappend">H5PTappend</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTappend( <em>hid_t</em>  table_id, 
-    <em>size_t</em>   nrecords,    <em>const void</em> *data)</dt>
+  <dl><dt><code><em>herr_t</em>       H5PTappend(<em>hid_t</em>  table_id, 
+    <em>size_t</em>   nrecords,    <em>const void</em> *data)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -355,11 +437,12 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
-    <dd>IN: Identifier of packet table to which packets should be appended. </dd>
-    <dt><em>size_t</em> <code>nrecords</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
+    <dd>IN: Identifier of packet table to which packets should be 
+    appended. </dd>
+    <dt><code><em>size_t</em> nrecords</code> </dt>
     <dd>IN: Number of packets to be appended. </dd>
-    <dt><em>const void *</em><code>data</code> </dt>
+    <dt><code><em>const void *</em> data</code> </dt>
     <dd>IN: Buffer holding data to write. </dd>
   </dl>
 </dl>
@@ -371,12 +454,14 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTcreate_index" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTcreate_index">H5PTcreate_index</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>    H5PTcreate_index( <em>hid_t</em>  table_id)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTcreate_index(<em>hid_t</em> table_id)
+  </code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -393,7 +478,7 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table whose index should be initialized. </dd>
   </dl>
 </dl>
@@ -405,13 +490,15 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTset_index" -->
+<br />
 <hr>
 <dl>
-  <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTset_index">H5PTset_index</a> </dt>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+  <a name="H5PTset_index">H5PTset_index</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTset_index( <em>hid_t</em>  table_id, 
-    <em>hsize_t</em>   pt_index)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTset_index(<em>hid_t</em> table_id, 
+    <em>hsize_t</em> pt_index)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -425,9 +512,9 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table whose index is to be set. </dd>
-    <dt><em>hsize_t</em> <code>index</code> </dt>
+    <dt><code><em>hsize_t</em> index</code> </dt>
     <dd>IN: The packet to which the index should point. </dd>
   </dl>
 </dl>
@@ -439,14 +526,15 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTread_packets" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTread_packets">H5PTread_packets</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTread_packets( <em>hid_t</em>  table_id, 
-    <em>hsize_t</em>   start,  <em>size_t</em>   nrecords,
-    <em>void* data</em>)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTread_packets(<em>hid_t</em> table_id, 
+    <em>hsize_t</em> start, <em>size_t</em> nrecords, 
+    <em>void* data</em>)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -460,20 +548,20 @@ The following functions are part of the HDF5 Packet Table API.  </p>
       For a packet table holding variable-length records, the data returned
       in the buffer will be in form of <code>hvl_t</code> structs, each
       containing the length of the data and a pointer to it in memory.
-<!--
+
       The memory used by this data must be freed using 
-      <code>H5PTfree_vlen_readbuff</code>. 
--->
+      <code>H5PTfree_vlen_buff</code>. 
+
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table to read from. </dd>
-    <dt><em>hsize_t</em> <code>start</code> </dt>
+    <dt><code><em>hsize_t</em> start</code> </dt>
     <dd>IN: Packet to start reading from. </dd>
-    <dt><em>size_t</em> <code>nrecords</code> </dt>
+    <dt><code><em>size_t</em> nrecords</code> </dt>
     <dd>IN: Number of packets to be read. </dd>
-    <dt><em>void *</em><code>data</code> </dt>
+    <dt><code><em>void *</em> data</code> </dt>
     <dd>OUT: Buffer into which to read data. </dd>
   </dl>
 </dl>
@@ -485,13 +573,15 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTget_next" -->
+<br />
 <hr>
 <dl>
-  <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTget_next">H5PTget_next</a> </dt>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+  <a name="H5PTget_next">H5PTget_next</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTget_next( <em>hid_t</em>  table_id, 
-    <em>size_t</em>   nrecords,  <em>void</em> *data)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTget_next(<em>hid_t</em>  table_id, 
+    <em>size_t</em> nrecords, <em>void</em> *data)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -505,22 +595,22 @@ The following functions are part of the HDF5 Packet Table API.  </p>
       <code>H5PTcreate_index</code>.
       <code>data</code> is a buffer into which the data should 
       be read.
-      <P>
+      <p>
       For a packet table holding variable-length records, the data returned
       in the buffer will be in form of a <code>hvl_t</code> struct
       containing the length of the data and a pointer to it in memory.
-<!--
+
       The memory used by this data must be freed using 
-      <code>H5PTfree_vlen_readbuff</code>. 
--->
+      <code>H5PTfree_vlen_buff</code>. 
+
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table to read from. </dd>
-    <dt><em>size_t</em> <code>nrecords</code> </dt>
+    <dt><code><em>size_t</em> nrecords</code> </dt>
     <dd>IN: Number of packets to be read. </dd>
-    <dt><em>void *</em><code>data</code> </dt>
+    <dt><code><em>void *</em> data</code> </dt>
     <dd>OUT: Buffer into which to read data. </dd>
   </dl>
 </dl>
@@ -530,15 +620,124 @@ The following functions are part of the HDF5 Packet Table API.  </p>
   <dd>Returns a non-negative value if successful, otherwise returns a negative value.</dd>
 </dl>
 
+
+
+<br />
+<hr>
+<dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    <a name="H5PTget_dataset">H5PTget_dataset</a> </dt>
+
+  <dt><strong>Signature:</strong> </dt>
+  <dl><dt><code><em>hid_t</em> H5PTget_dataset(<em>hid_t</em> table_id)
+  </code></dt>
+  </dl>
+
+  <dt><strong>Purpose:</strong> </dt>
+  <dd>Returns the backend dataset of this packet table.</dd>
+
+  <dt><strong>Description:</strong> </dt>
+  <dd><code>H5PTget_dataset</code> returns the identifier of the 
+  dataset storing the packet table <code>table_id</code>. This dataset 
+  identifier will be closed by <code>H5PTclose</code>.
+  </dd>
+
+  <dt><strong>Parameters:</strong> </dt>
+    <dl>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
+    <dd>IN: Identifier of the packet table.</dd>
+  </dl>
+</dl>
+
+<dl>
+  <dt><strong>Returns:</strong> </dt>
+  <dd>Returns a dataset identifier or <code>H5I_INVALID_HID</code> 
+  on error.</dd>
+</dl>
+
+<dl>
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+</dl>
+
+
+
+<br />
+<hr>
+<dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    <a name="H5PTget_type">H5PTget_type</a> </dt>
+
+  <dt><strong>Signature:</strong> </dt>
+  <dl><dt><code><em>hid_t</em> H5PTget_type(<em>hid_t</em> table_id)
+  </code></dt>
+  </dl>
+
+  <dt><strong>Purpose:</strong> </dt>
+  <dd>Returns the backend datatype of this packet table.</dd>
+
+  <dt><strong>Description:</strong> </dt>
+  <dd><code>H5PTget_type</code> returns the identifier of the 
+  datatype used by the packet table <code>table_id</code>. This datatype 
+  identifier will be closed by <code>H5PTclose</code>.
+  </dd>
+
+  <dt><strong>Parameters:</strong> </dt>
+    <dl>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
+    <dd>IN: Identifier of the packet table.</dd>
+  </dl>
+</dl>
+
+<dl>
+  <dt><strong>Returns:</strong> </dt>
+  <dd>Returns a datatype identifier or <code>H5I_INVALID_HID</code> 
+  on error.</dd>
+</dl>
+
+<dl>
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+</dl>
+
+
+
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTget_num_packets" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTget_num_packets">H5PTget_num_packets</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTget_num_packets( <em>hid_t</em>  table_id, 
-    <em>hsize_t *</em>  nrecords)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTget_num_packets(<em>hid_t</em>  
+  table_id, <em>hsize_t *</em> nrecords)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -551,9 +750,9 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier of packet table to query. </dd>
-    <dt><em>hsize_t</em> <code>nrecords</code> </dt>
+    <dt><code><em>hsize_t</em> nrecords</code> </dt>
     <dd>OUT: Number of packets in packet table. </dd>
   </dl>
 </dl>
@@ -565,12 +764,14 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5PTis_valid" -->
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTis_valid">H5PTis_valid</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTis_valid( <em>hid_t</em>  table_id)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTis_valid(<em>hid_t</em>  table_id)
+  </code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -583,7 +784,7 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Identifier to query. </dd>
   </dl>
 </dl>
@@ -595,13 +796,15 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
 <!-- HTMLdoc CODING                       NEW PAGE -->
 <!-- HTMLdoc CODING                       HEADER RIGHT "H5PTis_varlen" -->
-<!--
+
+<br />
 <hr>
 <dl>
   <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTis_varlen">H5PTis_varlen</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTis_varlen( <em>hid_t</em>  table_id)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTis_varlen(<em>hid_t</em> table_id)
+  </code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -616,7 +819,7 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Packet table to query. </dd>
   </dl>
 </dl>
@@ -625,18 +828,37 @@ The following functions are part of the HDF5 Packet Table API.  </p>
   <dt><strong>Returns:</strong> </dt>
   <dd>Returns 1 for a variable-length packet table, 0 for fixed-length, or a negative value on error.</dd>
 </dl>
--->
+
+<dl>
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function re-introduced. Function had been 
+          removed in 1.8.3.</td>
+        </tr>
+        </table>
+    </dd>
+</dl>
 
 <!-- HTMLdoc CODING                       NEW PAGE -->
-<!-- HTMLdoc CODING                       HEADER RIGHT "H5PTfree_vlen_readbuff" -->
-<!--
+<!-- HTMLdoc CODING                       HEADER RIGHT "H5PTfree_vlen_buff" -->
+
+<br />
 <hr>
 <dl>
-  <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTfree_vlen_readbuff">H5PTfree_vlen_readbuff</a> </dt>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> <a name="H5PTfree_vlen_buff">H5PTfree_vlen_buff</a> </dt>
 
   <dt><strong>Signature:</strong> </dt>
-  <dl><dt> <em>herr_t</em>       H5PTfree_vlen_readbuff( <em>hid_t</em>  table_id,
-      <em>hsize_t</em> bufflen,    <em>void *</em> buff)</dt>
+  <dl><dt><code><em>herr_t</em> H5PTfree_vlen_buff(<em>hid_t</em>  table_id,
+      <em>hsize_t</em> bufflen,    <em>void *</em> buff)</code></dt>
   </dl>
 
   <dt><strong>Purpose:</strong> </dt>
@@ -644,17 +866,17 @@ The following functions are part of the HDF5 Packet Table API.  </p>
 
   <dt><strong>Description:</strong> </dt>
   <dd>When variable-length packets are read, memory is automatically allocated
-      to hold them, and must be freed.  <code>H5PTfree_vlen_readbuff</code>
+      to hold them, and must be freed.  <code>H5PTfree_vlen_buff</code>
       frees this memory, and should be called whenever packets are read
       from a variable-length packet table.  </dd>
 
   <dt><strong>Parameters:</strong> </dt>
     <dl>
-    <dt><em>hid_t</em> <code>table_id</code> </dt>
+    <dt><code><em>hid_t</em> table_id</code> </dt>
     <dd>IN: Packet table whose memory should be freed. </dd>
-    <dt><em>hsize_t</em> <code>bufflen</code> </dt>
+    <dt><code><em>hsize_t</em> bufflen</code> </dt>
     <dd>IN: Size of <code>buff</code>. </dd>
-    <dt><em>void *</em> <code>buff</code> </dt>
+    <dt><code><em>void *</em> buff</code> </dt>
     <dd>IN: Buffer that was used to read in variable-length packets. </dd>
   </dl>
 </dl>
@@ -663,7 +885,30 @@ The following functions are part of the HDF5 Packet Table API.  </p>
   <dt><strong>Returns:</strong> </dt>
   <dd>Returns a non-negative value on success or a negative value on error.</dd>
 </dl>
--->
+
+<dl>
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function re-introduced. Function had been 
+          removed in 1.8.3.</td>
+        </tr>
+        </table>
+    </dd>
+</dl>
+
+
+<br />
+<br />
+<br />
 
 <!-- #BeginLibraryItem "/ed_libs/NavBar_RMHL.lbi" -->
 <hr>
@@ -723,7 +968,7 @@ In the
 <!--
 document.writeln(' \
 <address> \
-  Last modified: 12 February 2013 <br> \
+  Last modified: 9 May 2016 <br> \
 </address> \
 ');
 -->
diff --git a/html/HL/RM_H5PT_c++.html b/html/HL/RM_H5PT_c++.html
index afbebef..385bc14 100755
--- a/html/HL/RM_H5PT_c++.html
+++ b/html/HL/RM_H5PT_c++.html
@@ -1,2266 +1,802 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
-xmlns="http://www.w3.org/TR/REC-html40">
+<html>
 
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 15">
-<meta name=Originator content="Microsoft Word 15">
-<link rel=File-List href="RM_H5PT_c++_files/filelist.xml">
-<link rel=Edit-Time-Data href="RM_H5PT_c++_files/editdata.mso">
-<!--[if !mso]>
-<style>
-v\:* {behavior:url(#default#VML);}
-o\:* {behavior:url(#default#VML);}
-w\:* {behavior:url(#default#VML);}
-.shape {behavior:url(#default#VML);}
-</style>
-<![endif]-->
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
 <title> Packet Table C++ Wrapper Reference Manual </title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Author>bmribler</o:Author>
-  <o:Template>Normal</o:Template>
-  <o:LastAuthor>bmribler</o:LastAuthor>
-  <o:Revision>16</o:Revision>
-  <o:TotalTime>407</o:TotalTime>
-  <o:Created>2016-03-21T19:21:00Z</o:Created>
-  <o:LastSaved>2016-03-24T19:42:00Z</o:LastSaved>
-  <o:Pages>7</o:Pages>
-  <o:Words>1890</o:Words>
-  <o:Characters>10779</o:Characters>
-  <o:Company>Microsoft</o:Company>
-  <o:Lines>89</o:Lines>
-  <o:Paragraphs>25</o:Paragraphs>
-  <o:CharactersWithSpaces>12644</o:CharactersWithSpaces>
-  <o:Version>15.00</o:Version>
- </o:DocumentProperties>
- <o:OfficeDocumentSettings>
-  <o:AllowPNG/>
- </o:OfficeDocumentSettings>
-</xml><![endif]-->
-<link rel=themeData href="RM_H5PT_c++_files/themedata.thmx">
-<link rel=colorSchemeMapping href="RM_H5PT_c++_files/colorschememapping.xml">
-<!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:View>Print</w:View>
-  <w:SpellingState>Clean</w:SpellingState>
-  <w:GrammarState>Clean</w:GrammarState>
-  <w:TrackMoves>false</w:TrackMoves>
-  <w:TrackFormatting/>
-  <w:ValidateAgainstSchemas/>
-  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
-  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
-  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
-  <w:DoNotPromoteQF/>
-  <w:LidThemeOther>EN-US</w:LidThemeOther>
-  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
-  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
-  <w:Compatibility>
-   <w:BreakWrappedTables/>
-   <w:SplitPgBreakAndParaMark/>
-  </w:Compatibility>
-  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
-  <m:mathPr>
-   <m:mathFont m:val="Cambria Math"/>
-   <m:brkBin m:val="before"/>
-   <m:brkBinSub m:val="--"/>
-   <m:smallFrac m:val="off"/>
-   <m:dispDef/>
-   <m:lMargin m:val="0"/>
-   <m:rMargin m:val="0"/>
-   <m:defJc m:val="centerGroup"/>
-   <m:wrapIndent m:val="1440"/>
-   <m:intLim m:val="subSup"/>
-   <m:naryLim m:val="undOvr"/>
-  </m:mathPr></w:WordDocument>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
-  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
-  LatentStyleCount="371">
-  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
-  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
-  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 6"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 7"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 8"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index 9"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 1"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 2"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 3"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 4"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 5"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 6"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 7"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 8"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" Name="toc 9"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Normal Indent"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="footnote text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="annotation text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="header"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="footer"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="index heading"/>
-  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="table of figures"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="envelope address"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="envelope return"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="footnote reference"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="annotation reference"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="line number"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="page number"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="endnote reference"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="endnote text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="table of authorities"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="macro"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="toa heading"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Bullet"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Number"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Bullet 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Bullet 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Bullet 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Bullet 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Number 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Number 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Number 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Number 5"/>
-  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Closing"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Signature"/>
-  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
-   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text Indent"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Continue"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Continue 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Continue 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Continue 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="List Continue 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Message Header"/>
-  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Salutation"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Date"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text First Indent"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text First Indent 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Note Heading"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text Indent 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Body Text Indent 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Block Text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Hyperlink"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="FollowedHyperlink"/>
-  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
-  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Document Map"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Plain Text"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="E-mail Signature"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Top of Form"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Bottom of Form"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Normal (Web)"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Acronym"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Address"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Cite"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Code"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Definition"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Keyboard"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Preformatted"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Sample"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Typewriter"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="HTML Variable"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Normal Table"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="annotation subject"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="No List"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Outline List 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Outline List 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Outline List 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Simple 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Simple 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Simple 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Classic 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Classic 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Classic 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Classic 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Colorful 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Colorful 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Colorful 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Columns 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Columns 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Columns 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Columns 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Columns 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 6"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 7"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Grid 8"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 4"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 5"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 6"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 7"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table List 8"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table 3D effects 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table 3D effects 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table 3D effects 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Contemporary"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Elegant"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Professional"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Subtle 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Subtle 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Web 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Web 2"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Web 3"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Balloon Text"/>
-  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
-  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
-   Name="Table Theme"/>
-  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
-  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
-  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
-  <w:LsdException Locked="false" Priority="34" QFormat="true"
-   Name="List Paragraph"/>
-  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
-  <w:LsdException Locked="false" Priority="30" QFormat="true"
-   Name="Intense Quote"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
-  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
-  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
-  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
-  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
-  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
-  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
-  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
-  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
-  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
-  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
-  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
-  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
-  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
-  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
-  <w:LsdException Locked="false" Priority="19" QFormat="true"
-   Name="Subtle Emphasis"/>
-  <w:LsdException Locked="false" Priority="21" QFormat="true"
-   Name="Intense Emphasis"/>
-  <w:LsdException Locked="false" Priority="31" QFormat="true"
-   Name="Subtle Reference"/>
-  <w:LsdException Locked="false" Priority="32" QFormat="true"
-   Name="Intense Reference"/>
-  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
-  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
-   UnhideWhenUsed="true" Name="Bibliography"/>
-  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
-   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
-  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
-  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
-  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
-  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
-  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
-  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
-  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
-  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
-  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 1"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 1"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 1"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 2"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 2"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 2"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 3"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 3"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 3"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 4"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 4"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 4"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 5"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 5"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 5"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="Grid Table 1 Light Accent 6"/>
-  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
-  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
-  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
-  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="Grid Table 6 Colorful Accent 6"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="Grid Table 7 Colorful Accent 6"/>
-  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
-  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
-  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 1"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 1"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 1"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 2"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 2"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 2"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 3"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 3"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 3"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 4"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 4"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 4"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 5"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 5"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 5"/>
-  <w:LsdException Locked="false" Priority="46"
-   Name="List Table 1 Light Accent 6"/>
-  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
-  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
-  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
-  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
-  <w:LsdException Locked="false" Priority="51"
-   Name="List Table 6 Colorful Accent 6"/>
-  <w:LsdException Locked="false" Priority="52"
-   Name="List Table 7 Colorful Accent 6"/>
- </w:LatentStyles>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Wingdings;
-	panose-1:5 0 0 0 0 0 0 0 0 0;
-	mso-font-charset:2;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:0 268435456 0 0 -2147483648 0;}
- at font-face
-	{font-family:Wingdings;
-	panose-1:5 0 0 0 0 0 0 0 0 0;
-	mso-font-charset:2;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:0 268435456 0 0 -2147483648 0;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-h1
-	{mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-link:"Heading 1 Char";
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:1;
-	font-size:24.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	font-weight:bold;}
-a:link, span.MsoHyperlink
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	color:blue;
-	text-decoration:underline;
-	text-underline:single;}
-a:visited, span.MsoHyperlinkFollowed
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	color:purple;
-	text-decoration:underline;
-	text-underline:single;}
-p
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-code
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	font-family:"Courier New";
-	mso-ascii-font-family:"Courier New";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-hansi-font-family:"Courier New";
-	mso-bidi-font-family:"Courier New";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{mso-style-noshow:yes;
-	mso-style-priority:1;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-span.Heading1Char
-	{mso-style-name:"Heading 1 Char";
-	mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-locked:yes;
-	mso-style-link:"Heading 1";
-	mso-ansi-font-size:16.0pt;
-	mso-bidi-font-size:16.0pt;
-	font-family:"Calibri Light",sans-serif;
-	mso-ascii-font-family:"Calibri Light";
-	mso-ascii-theme-font:major-latin;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:major-fareast;
-	mso-hansi-font-family:"Calibri Light";
-	mso-hansi-theme-font:major-latin;
-	mso-bidi-font-family:"Times New Roman";
-	mso-bidi-theme-font:major-bidi;
-	color:#2E74B5;
-	mso-themecolor:accent1;
-	mso-themeshade:191;}
-span.varconstfunc
-	{mso-style-name:var_const_func;
-	mso-style-priority:1;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-ansi-font-size:10.0pt;
-	font-family:"Courier New";
-	mso-ascii-font-family:"Courier New";
-	mso-hansi-font-family:"Courier New";
-	mso-bidi-font-family:"Courier New";}
-span.SpellE
-	{mso-style-name:"";
-	mso-spl-e:yes;}
-span.GramE
-	{mso-style-name:"";
-	mso-gram-e:yes;}
-.MsoChpDefault
-	{mso-style-type:export-only;
-	mso-default-props:yes;
-	font-size:10.0pt;
-	mso-ansi-font-size:10.0pt;
-	mso-bidi-font-size:10.0pt;}
- at page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.WordSection1
-	{page:WordSection1;}
- /* List Definitions */
- @list l0
-	{mso-list-id:196623608;
-	mso-list-template-ids:1196204752;}
- at list l0:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l0:level2
-	{mso-level-number-format:bullet;
-	mso-level-text:o;
-	mso-level-tab-stop:1.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:"Courier New";
-	mso-bidi-font-family:"Times New Roman";}
- at list l0:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l0:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
- at list l1
-	{mso-list-id:1383558690;
-	mso-list-template-ids:-1773767842;}
- at list l1:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level2
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:1.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
- at list l1:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-ol
-	{margin-bottom:0in;}
-ul
-	{margin-bottom:0in;}
--->
-</style>
-<!--[if gte mso 10]>
-<style>
- /* Style Definitions */
- table.MsoNormalTable
-	{mso-style-name:"Table Normal";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-style-parent:"";
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin:0in;
-	mso-para-margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman",serif;}
-</style>
-<![endif]--><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="1026"/>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <o:shapelayout v:ext="edit">
-  <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]-->
 </head>
 
-<body bgcolor=white lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
-
-<div class=WordSection1>
-
-<p class=MsoNormal><a name=TopofRM><span style='mso-fareast-font-family:"Times New Roman"'> </span></a><span
-style='mso-fareast-font-family:"Times New Roman"'><!-- #BeginLibraryItem "/ed_libs/NavBar_RMHL.lbi" -->
-<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
+<body bgcolor="#FFFFFF">
 
-</span></div>
 
-<div align=center>
-
-<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="98%"
- style='width:98.0%;mso-cellspacing:1.5pt;mso-yfti-tbllook:1184;mso-padding-alt:
- 0in 5.4pt 0in 5.4pt'>
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
-  <td valign=top style='padding:.75pt .75pt .75pt .75pt'>
-  <p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"'><a
-  href="../index.html">HDF5 documents and links</a> <br>
-  <a href="../H5.intro.html">Introduction to HDF5</a> <br>
-  <a href="../UG/HDF5_Users_Guide-Responsive%20HTML5/index.html"><span
-  class=SpellE>HDF5</span> User's Guide</a> <br>
-  <a href="index.html">Other High-level API documents</a> <o:p></o:p></span></p>
-  </td>
-  <td valign=top style='padding:.75pt .75pt .75pt .75pt'>
-  <p class=MsoNormal align=right style='text-align:right'><span
-  style='mso-fareast-font-family:"Times New Roman"'><!--
-<a href="Glossary.html">Glossary</a><br>
--->In
-  the <a href="../RM/RM_H5Front.html">HDF5 Reference Manual</a>   </span><span
-  style='font-size:10.0pt;mso-fareast-font-family:"Times New Roman"'><br>
-  <a href="RM_H5DS.html">H5DS</a>   <a href="RM_H5IM.html">H5IM</a>  
-  <a href="RM_H5LT.html">H5LT</a>   <a href="RM_H5PT.html">H5PT</a>  
-  <a href="RM_H5TB.html">H5TB</a>   <a href="RM_HDF5Optimized.html">Optimized</a> 
-  <br>
-  <a href="../RM/RM_H5.html">H5</a>   <a href="../RM/RM_H5A.html">H5A</a>  
-  <a href="../RM/RM_H5D.html">H5D</a>   <a href="../RM/RM_H5E.html">H5E</a>  
-  <a href="../RM/RM_H5F.html">H5F</a>   <a href="../RM/RM_H5G.html">H5G</a>  
-  <a href="../RM/RM_H5I.html">H5I</a>   <br>
-  <a href="../RM/RM_H5L.html">H5L</a>   <a href="../RM/RM_H5O.html">H5O</a>  
-  <a href="../RM/RM_H5P.html">H5P</a>   <a href="../RM/RM_H5R.html">H5R</a>  
-  <a href="../RM/RM_H5S.html">H5S</a>   <a href="../RM/RM_H5T.html">H5T</a>  
-  <a href="../RM/RM_H5Z.html">H5Z</a>   <br>
-  <a href="../RM/Tools.html">Tools</a>   <a
-  href="../RM/PredefDTypes.html">Datatypes</a>   <a
-  href="../fortran/index.html">Fortran</a>   </span><span
-  style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-  </td>
- </tr>
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * Copyright by the Board of Trustees of the University of Illinois.         *
+  * All rights reserved.                                                      *
+  *                                                                           *
+  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
+  * terms governing use, modification, and redistribution, is contained in    *
+  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
+  * of the source code distribution tree; Copyright.html can be found at the  *
+  * root level of an installed copy of the electronic HDF5 document set and   *
+  * is linked from the top-level documents page.  It can also be found at     *
+  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
+  * access to either file, you may request a copy from help at hdfgroup.org.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+
+<!-- HEADER RIGHT " " -->
+<!-- HEADER RIGHT "Packet Table" -->
+
+<a name="TopofRM"> </a>
+<!-- #BeginLibraryItem "/ed_libs/NavBar_RMHL.lbi" -->
+<hr />
+<center>
+<table border=0 width=98%>
+<tr><td valign=top align=left>
+<a href="../index.html">HDF5 documents and links</a> <br />
+<a href="../H5.intro.html">Introduction to HDF5</a> <br />
+<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 
+    User’s Guide</a> <br />
+<a href="index.html">Other High-level API documents</a>
+<!--
+<a href="Glossary.html">Glossary</a><br />
+-->
+</td>
+<td valign=top align=right>
+In the 
+<a href="../RM/RM_H5Front.html">HDF5 Reference Manual</a>  
+<font size=-1>
+<br />
+<a href="RM_H5DS.html">H5DS</a>  
+<a href="RM_H5IM.html">H5IM</a>  
+<a href="RM_H5LT.html">H5LT</a>  
+<a href="RM_H5PT.html">H5PT</a>  
+<a href="RM_H5TB.html">H5TB</a>  
+<a href="RM_HDF5Optimized.html">Optimized</a> 
+<br />
+<a href="../RM/RM_H5.html">H5</a>  
+<a href="../RM/RM_H5A.html">H5A</a>  
+<a href="../RM/RM_H5D.html">H5D</a>  
+<a href="../RM/RM_H5E.html">H5E</a>  
+<a href="../RM/RM_H5F.html">H5F</a>  
+<a href="../RM/RM_H5G.html">H5G</a>  
+<a href="../RM/RM_H5I.html">H5I</a>  
+<br />
+<a href="../RM/RM_H5L.html">H5L</a>  
+<a href="../RM/RM_H5O.html">H5O</a>  
+<a href="../RM/RM_H5P.html">H5P</a>  
+<a href="../RM/RM_H5R.html">H5R</a>  
+<a href="../RM/RM_H5S.html">H5S</a>  
+<a href="../RM/RM_H5T.html">H5T</a>  
+<a href="../RM/RM_H5Z.html">H5Z</a>  
+<br />
+<a href="../RM/Tools.html">Tools</a>  
+<a href="../RM/PredefDTypes.html">Datatypes</a>  
+<a href="../fortran/index.html">Fortran</a>  
+</font>
+</td></tr>
 </table>
+</center>
+<hr />
+<!-- #EndLibraryItem -->
+<h1 align="center">H5PT: HDF5 Packet Table<br />C++ Wrappers</h1>
 
-</div>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<h1 align=center style='text-align:center'><span style='mso-fareast-font-family:
-"Times New Roman"'><!-- #EndLibraryItem -->H5PT: HDF5 Packet Table<br>
-C++ Wrappers<o:p></o:p></span></h1>
-
-<p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"'><br>
-<strong><!--
+<!--
 <h2>Draft</h2>
--->Classes:</strong> <o:p></o:p></span></p>
-
-<ul type=disc>
- <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
-     mso-list:l0 level1 lfo3;tab-stops:list .5in'><strong><span
-     style='mso-fareast-font-family:"Times New Roman"'>PacketTable</span></strong><span
-     style='mso-fareast-font-family:"Times New Roman"'> - functions shared by
-     all packet tables <o:p></o:p></span></li>
- <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
-     mso-list:l0 level1 lfo3;tab-stops:list .5in'><strong><span
-     style='mso-fareast-font-family:"Times New Roman"'>FL_PacketTable</span></strong><span
-     style='mso-fareast-font-family:"Times New Roman"'> - a packet table
-     storing fixed-length and variable-length packets<o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='margin-bottom:12.0pt'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Functions</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> (none are static; all must be called on an object):<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Packet
-Table:</span></strong><span style='mso-fareast-font-family:"Times New Roman"'> <o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> Null Constructor <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
-style='mso-fareast-font-family:"Times New Roman"'>PacketTable(</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> )<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Creates an invalid packet table object.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>The object created with this call will return false if </span><span
-class=SpellE><span class=GramE><span class=varconstfunc><span style='font-size:
-10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>IsValid</span></span></span></span><span
-class=GramE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>(</span></span></span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>)</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> is called on it. To create a valid packet table, use the </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>FL_Packet_Table</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> constructors. This function does
-not make any change to the underlying HDF5 file. <o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> "Open" Constructor <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
-style='mso-fareast-font-family:"Times New Roman"'>PacketTable(</span></span><span
-class=SpellE><span style='mso-fareast-font-family:"Times New Roman"'>hid_t</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>fileID</span>,
-<span class=SpellE>const</span> char* <span class=SpellE>ptname</span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Opens an existing packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Opens an existing packet table, named </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>ptname</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, which can contain either
-fixed-length or variable-length packets.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>fileID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: file or group in which the packet table is located<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>const</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> char* <span class=SpellE>ptname</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: the packet table's name<o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'><<span class=SpellE>hr<!-- NEW PAGE --></span>
-size=3 width="100%" align=center> </span></p>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> Destructor <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>~<span class=GramE>PacketTable()</span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>The destructor closes the packet table in the file, so a
-packet table created or opened with the C++ wrapper does not need to be closed
-manually.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>IsValid</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
-style='mso-fareast-font-family:"Times New Roman"'>bool</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>IsValid</span>()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Determines if this is a valid packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function is used to ensure that a PacketTable object
-corresponds to an open packet table in the file. It should be called after the
-constructor to check that there were no errors creating or opening the packet
-table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns true if this is an open packet table, false
-otherwise.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>IsVariableLength</span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>IsVariableLength</span>
-()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Determines if this is a valid packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'>This function<span
-style='mso-fareast-font-family:"Times New Roman"'> returns </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>1</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> if this packet table uses a variable-length datatype, </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>0</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> if not, and </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='font-size:8.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:"Times New Roman"'>
-</span><span style='mso-fareast-font-family:"Times New Roman"'>if failure
-occurs.</span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>1</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>0</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'>, or </span><span class=varconstfunc><span style='font-size:
-10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>ResetIndex</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=GramE><span
-style='mso-fareast-font-family:"Times New Roman"'>void</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>ResetIndex</span>()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Resets the packet table's index to point to the first
-packet.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>A packet table keeps track of the user's current location in
-the table so that the user can iterate through packets. This function should be
-called before using <span class=SpellE>GetNextPacket</span>.<o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'><<span class=SpellE>hr<!-- NEW PAGE --></span>
-size=3 width="100%" align=center> </span></p>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>SetIndex</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>SetIndex</span>(<span
-class=SpellE>hsize_t</span> index);<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Sets a packet table's current index.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function allows the user to begin iterating through packets
-starting from any arbitrary index. Packet tables are zero-indexed, so packet 0
-is the first packet.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> index<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The value to which the packet table's index should be
-set<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns non-negative on success, negative on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetIndex</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hsize_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetIndex</span>(<span
-class=SpellE>int</span>& error);<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns the position of the current packet.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function allows the user to determine the position of
-the current packet. <o:p></o:p></span></p>
-
-<p style='margin-left:.5in'>If <span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>GetIndex</span></span></span>
-returns <span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>0</span></span> (zero), you must
-then check the value of the parameter <span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>error</span></span>.
-If <span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>error</span></span> is negative,
-<span class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;
-mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>GetIndex</span></span></span>
-has failed; if <span class=varconstfunc><span style='font-size:10.0pt;
-mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>error</span></span>
-is <span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>0</span></span> (zero), the
-position of the current packet is <span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>0</span></span>
-(zero). </p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>int</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'>& error (optional)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>OUT: Non-negative if index was successfully retrieved,
-negative on failure.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns the position of the current packet on success, </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>0</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> (zero) on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetPacketCount</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signatures:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hsize_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetPacketCount</span>()<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hsize_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetPacketCount</span>(<span
-class=SpellE>int</span>& error)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Retrieves the number of packets in the packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function is overloaded so that it can be called with or
-without returning an error value. If </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>error</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> is not supplied, any error
-value is ignored. Using this parameter allows the user to distinguish between
-an open packet table with 0 packets and an invalid packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>int</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'>& error (optional)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>OUT: Non-negative if packet count was successfully
-retrieved, negative if packet table is invalid.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Number of packets in packet table. Returns </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>0</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> if packet table contains zero packets or on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>FreeBuff</span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signatures:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>FreeBuff</span>
-()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Frees the buffer created when accessing data in a variable-length
-packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Takes the number of <span class=SpellE>hvl_t</span> <span
-class=SpellE>structs</span> to be freed and a pointer to their location in
-memory.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>size_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>numStructs</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Number of <span class=SpellE>structs</span> to be free.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span style='mso-fareast-font-family:
-"Times New Roman"'>hvl_t</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> *buffer<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Pointer to location.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>SUCCEED</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, on success, and </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'><<span class=SpellE>hr<!-- NEW PAGE --><!-- HEADER RIGHT "FL_Packet_Table" --></span>
-size=3 width="100%" align=center> </span></p>
-
-<p class=MsoNormal><span class=SpellE><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>FL_Packet_Table</span></strong></span><strong><span
-style='mso-fareast-font-family:"Times New Roman"'>:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> "Create" Constructor <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>FL_<span class=GramE>PacketTable(</span><span class=SpellE>hid_t</span>
-<span class=SpellE>fileID</span>, <span class=SpellE>hid_t</span> <span
-class=SpellE>plistID</span>, <span class=SpellE>const</span> char* <span
-class=SpellE>ptname</span>, <span class=SpellE>hid_t</span> <span class=SpellE>dtypeID</span>,
-<span class=SpellE>hsize_t</span> <span class=SpellE>chunkSize</span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Creates a new packet table for storing fixed-length or
-variable-length packets.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This constructor creates and opens a packet table</span><code><span
-style='font-size:10.0pt'>,</span></code><span style='mso-fareast-font-family:
-"Times New Roman"'> named </span><span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>ptname</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, in the file specified by </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>fileID</span></span></span><code><span
-style='font-size:10.0pt'>. </span></code><span style='mso-fareast-font-family:
-"Times New Roman"'>Packets will be of the datatype specified by </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>dtypeID</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>.<span
-style='mso-spacerun:yes'>� </span>The packet table uses HDF5 chunked storage to
-allow it to grow.<span style='mso-spacerun:yes'>� </span>The chunk size can be
-specified by </span><span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>chunkSize</span></span></span><code><span
-style='font-size:10.0pt'>.</span></code><span style='mso-fareast-font-family:
-"Times New Roman"'> The chunk size affects performance, so it should be
-determined with care when performance is important.<span
-style='mso-spacerun:yes'>� </span>Compression can be set via the dataset create
-property list, specified by </span><span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>plistID</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>fileID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Identifier of the file or group to create the table
-within.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>plistID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Identifier of the creation property list.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>const</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> char *<span class=SpellE>pt_name</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The name of the packet table to create.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>dtypeID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The datatype of a packet.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>chunkSize</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Desired chunk size.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center;background:#CCCCFF'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> "Create" Constructor (deprecated)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>FL_<span class=GramE>PacketTable(</span><span class=SpellE>hid_t</span>
-<span class=SpellE>fileID</span>, char* <span class=SpellE>ptname</span>, <span
-class=SpellE>hid_t</span> <span class=SpellE>dtypeID</span>, <span
-class=SpellE>hsize_t</span> <span class=SpellE>chunkSize</span>, <span
-class=SpellE>int</span> compression)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Creates a new packet table for storing fixed-length packets.<span
-style='mso-spacerun:yes'>� </span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This constructor will be deprecated in favor of the previous
-constructor, which provides flexibility in the compression method.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This constructor creates and opens a packet table in the
-file specified by </span><span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>fileID</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> named </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>ptname</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>. Packets will be of the
-datatype specified by </span><span class=SpellE><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>dtypeID</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>.<span
-style='mso-spacerun:yes'>� </span>The packet can be specified to contain data
-with deflate compression using the parameter </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>compression</span></span><code><span
-style='font-size:10.0pt'>.</span></code><span style='mso-fareast-font-family:
-"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>fileID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Identifier of the file or group to create the table
-within.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>const</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> char *<span class=SpellE>ptname</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The name of the packet table to create.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>dtypeID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The datatype of a packet.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>chunkSize</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The packet table uses HDF5 chunked storage to allow it
-to grow. This value allows the user to set the size of a chunk. The chunk size
-affects performance.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>int</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> compression<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Desired compression level: </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>0</span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> (zero) through </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>9</span></span><code><span
-style='font-size:10.0pt'>,</span></code><span style='mso-fareast-font-family:
-"Times New Roman"'> or </span><span class=varconstfunc><span style='font-size:
-10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>-1</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> for no compression.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> "Open" Constructor <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>FL_<span class=GramE>PacketTable(</span><span class=SpellE>hid_t</span>
-<span class=SpellE>fileID</span>, <span class=SpellE>const</span> char* <span
-class=SpellE>ptname</span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>FL_<span class=GramE>PacketTable(</span><span class=SpellE>hid_t</span>
-<span class=SpellE>fileID</span>, char* <span class=SpellE>ptname</span>)
-(deprecated)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Opens a fixed-length packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This constructor opens an existing packet table named </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>ptname</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> in the location </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>fileID</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>. This packet table must be
-fixed-length.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hid_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>fileID</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Identifier of the file or group containing the packet
-table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>const</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> char *<span class=SpellE>ptname</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: The name of the packet table to open.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>AppendPacket</span> / <span
-class=SpellE>AppendPackets</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>AppendPacket</span>(void
-* data)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>AppendPackets</span>(<span
-class=SpellE>size_t</span> <span class=SpellE>numPackets</span>, void *data)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Appends packet(s) to the packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>These functions write packet(s) to the end of the packet
-table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'><!-- NEW PAGE -->Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>size_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>numPackets</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Number of packets to add.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>void</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> * data:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Data to write. Must be a buffer of packets of the packet
-table's datatype.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>SUCCEED</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, on success, and </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetPacket</span> / <span class=SpellE>GetPackets</span>
-<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signatures:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetPacket</span>(<span
-class=SpellE>hsize_t</span> index, void * data)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetPackets</span>(<span
-class=SpellE>hsize_t</span> <span class=SpellE>startIndex</span>, <span
-class=SpellE>hsize_t</span> <span class=SpellE>endIndex</span>, void * data)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Reads packets from the packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function fills a buffer, </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>data</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, with fixed-length packets
-from the packet table. The one-argument function can be called to retrieve a
-single packet at the given index, or the two-argument function used to read a
-range of packets (zero-indexed, inclusive).<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> index (single packet)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Index of the single packet to be read<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>startIndex</span> (multiple packets)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Index at which to start reading packets<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>hsize_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>endIndex</span> (multiple packets)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: Index at which to stop reading packets<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>void</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> * data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>OUT: Buffer for packets being retrieved<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>SUCCEED</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, on success, and </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetNextPacket</span> / Get Next Packets <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signatures:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetNextPacket</span>(void
-* data)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>int</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetNextPackets</span>(<span
-class=SpellE>size_t</span> <span class=SpellE>numPackets</span>, void * data)<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Iterates through packets from the packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function reads packets starting from the current index
-in the packet table and updates the index. It can be used with the </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>ResetIndex</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> and </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>SetIndex</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> functions to iterate through
-the packet table.<span style='mso-spacerun:yes'>� </span></span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>GetNextPacket</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> reads a single packet and </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>GetNextPackets</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> read </span><span
-class=SpellE><span class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:
-12.0pt;mso-bidi-font-family:"Times New Roman"'>numPackets</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> packets.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Parameters:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=SpellE><span class=GramE><span style='mso-fareast-font-family:
-"Times New Roman"'>size_t</span></span></span><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>numPackets</span> (optional)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>IN: How many packets to read.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>void</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> * data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>OUT: Buffer to hold packets read.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns </span><span class=varconstfunc><span
-style='font-size:10.0pt;mso-bidi-font-size:12.0pt;mso-bidi-font-family:"Times New Roman"'>SUCCEED</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'>, on success, and </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>FAIL</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetTableId</span> <o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hid_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetTableId</span>
-()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns the identifier of the packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function returns the packet table identifier.<span
-style='mso-spacerun:yes'>� </span>However, the identifier is usually not needed
-by applications.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'><!-- NEW PAGE -->Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns a valid identifier on success, or </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>H5I_INVALID_HID</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> if the packet table is not
-valid.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetDatatype</span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hid_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetDatatype</span>
-()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns the datatype of this packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function returns the identifier of the datatype used by
-this packet table.<span style='mso-spacerun:yes'>� </span>However, it is better
-to avoid using this identifier in packet table applications, unless the desired
-functionality cannot be performed via the packet table ID.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'><!-- NEW PAGE -->Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns a valid identifier on success, or </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>H5I_INVALID_HID</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal style='background:#CCCCFF'><strong><span style='mso-fareast-font-family:
-"Times New Roman"'>Name:</span></strong><span style='mso-fareast-font-family:
-"Times New Roman"'> <span class=SpellE>GetDataset</span><o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Signature:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
-class=GramE><span style='mso-fareast-font-family:"Times New Roman"'>hid_t</span></span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>GetDataset</span>
-()<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Purpose:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns the dataset of this packet table.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'>Description:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>This function returns the identifier of the dataset of this
-packet table.<span style='mso-spacerun:yes'>� </span>However, it is better to
-avoid using this identifier in packet table applications, unless the desired
-functionality cannot be performed via the packet table ID.<o:p></o:p></span></p>
-
-<p class=MsoNormal><strong><span style='mso-fareast-font-family:"Times New Roman"'><!-- NEW PAGE -->Returns:</span></strong><span
-style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='mso-fareast-font-family:
-"Times New Roman"'>Returns a valid identifier on success, or </span><span
-class=varconstfunc><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
-mso-bidi-font-family:"Times New Roman"'>H5I_INVALID_HID</span></span><span
-style='mso-fareast-font-family:"Times New Roman"'> on error.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
+-->
 
-<p class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'><<span class=SpellE>hr<!-- #BeginLibraryItem "/ed_libs/NavBar_RMHL.lbi" --></span>
-size=3 width="100%" align=center> </span></p>
+<br />
+<strong>Classes:</strong>
 
-<div align=center>
+<ul>
+<li><a href="#PacketTable"><strong>PacketTable</strong></a> - functions 
+    shared by all packet tables</li>
+<li><a href="#FL_PacketTable"><strong>FL_PacketTable</strong></a> - a 
+    packet table storing fixed-length and variable-length packets</li>
+</ul>
 
-<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0 width="98%"
- style='width:98.0%;mso-cellspacing:1.5pt;mso-yfti-tbllook:1184;mso-padding-alt:
- 0in 5.4pt 0in 5.4pt'>
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
-  <td valign=top style='padding:.75pt .75pt .75pt .75pt'>
-  <p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"'><a
-  href="../index.html">HDF5 documents and links</a> <br>
-  <a href="../H5.intro.html">Introduction to HDF5</a> <br>
-  <a href="../UG/HDF5_Users_Guide-Responsive%20HTML5/index.html"><span
-  class=SpellE>HDF5</span> User's Guide</a> <br>
-  <a href="index.html">Other High-level API documents</a> <o:p></o:p></span></p>
-  </td>
-  <td valign=top style='padding:.75pt .75pt .75pt .75pt'>
-  <p class=MsoNormal align=right style='text-align:right'><span
-  style='mso-fareast-font-family:"Times New Roman"'><!--
-<a href="Glossary.html">Glossary</a><br>
--->In
-  the <a href="../RM/RM_H5Front.html">HDF5 Reference Manual</a>   </span><span
-  style='font-size:10.0pt;mso-fareast-font-family:"Times New Roman"'><br>
-  <a href="RM_H5DS.html">H5DS</a>   <a href="RM_H5IM.html">H5IM</a>  
-  <a href="RM_H5LT.html">H5LT</a>   <a href="RM_H5PT.html">H5PT</a>  
-  <a href="RM_H5TB.html">H5TB</a>   <a href="RM_HDF5Optimized.html">Optimized</a> 
-  <br>
-  <a href="../RM/RM_H5.html">H5</a>   <a href="../RM/RM_H5A.html">H5A</a>  
-  <a href="../RM/RM_H5D.html">H5D</a>   <a href="../RM/RM_H5E.html">H5E</a>  
-  <a href="../RM/RM_H5F.html">H5F</a>   <a href="../RM/RM_H5G.html">H5G</a>  
-  <a href="../RM/RM_H5I.html">H5I</a>   <br>
-  <a href="../RM/RM_H5L.html">H5L</a>   <a href="../RM/RM_H5O.html">H5O</a>  
-  <a href="../RM/RM_H5P.html">H5P</a>   <a href="../RM/RM_H5R.html">H5R</a>  
-  <a href="../RM/RM_H5S.html">H5S</a>   <a href="../RM/RM_H5T.html">H5T</a>  
-  <a href="../RM/RM_H5Z.html">H5Z</a>   <br>
-  <a href="../RM/Tools.html">Tools</a>   <a
-  href="../RM/PredefDTypes.html">Datatypes</a>   <a
-  href="../fortran/index.html">Fortran</a>   </span><span
-  style='mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
-  </td>
- </tr>
+  <strong>Functions</strong> (none are static; all must be called on an object):  
+
+  <br />
+  <br />
+  <br />
+  <hr />
+  <a name="PacketTable"><strong>Packet Table:</strong></a> 
+  <hr />
+  
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong>
+        Null Constructor</dt>
+  <dt><strong>Signature:</strong></dt>
+        <dd><code>PacketTable( )</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+        <dd>Creates an invalid packet table object.</dd>
+  <dt><strong>Description:</strong></dt>
+        <dd>The object created with this call will return false if 
+            <code>IsValid()</code> is called on it. To create a valid 
+            packet table, use the <code>FL_Packet_Table constructors</code>.
+            This function does not make any change to the underlying 
+            HDF5 file.
+    </dd>
+  </dl>
+
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong>
+    “Open” Constructor</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>PacketTable(hid_t fileID, const char* ptname)</code></dd>
+    <dd><code>PacketTable(hid_t fileID, char* ptname) 
+        (deprecated)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Opens an existing packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>Opens an existing packet table, named <code>ptname</code>, 
+        which can contain either fixed-length or variable-length 
+        packets.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hid_t fileID</code></dt>
+        <dd>IN: File or group in which the packet table is located</dd>
+    <dt><code>const char* ptname</code></dt>
+        <dd>IN: The packet table’s name</dd>
+    </dl>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="15%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="85%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function parameters were revised.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+<!-- NEW PAGE -->
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong>
+    Destructor</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>~PacketTable()</code></dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>The destructor closes the packet table in the file, so a packet 
+        table created or opened with the C++ wrapper does not 
+        need to be closed manually.</dd>
+  </dl>
+
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    IsValid</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>bool IsValid()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Determines if this is a valid packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function is used to ensure that a PacketTable object 
+        corresponds to an open packet table in the file. It should be 
+        called after the constructor to check that there were no errors 
+        creating or opening the packet table.</dd>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns true if this is an open packet table; otherwise 
+        returns false.</dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    IsVariableLength</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>int IsVariableLength()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Determines if this is a valid packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function returns <code>1</code> if this packet table uses 
+        a variable-length datatype, <code>0</code> if not, and 
+        <code>FAIL</code> if failure occurs.</dd>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns <code>1</code>, <code>0</code>, or <code>FAIL</code>.
+    </dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    ResetIndex</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>void ResetIndex()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Resets the packet table’s index to point to the first 
+        packet.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>A packet table keeps track of the user’s current location 
+        in the table so that the user can iterate through packets. This 
+        function should be called before using 
+        <code>GetNextPacket</code>.</dd>
+  </dl>
+  
+<!-- NEW PAGE -->  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    SetIndex</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>int SetIndex(hsize_t index);</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Sets a packet table’s current index.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function allows the user to begin iterating through packets 
+        starting from any arbitrary index. Packet tables are zero-indexed, 
+        so packet 0 is the first packet.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hsize_t index</code></dt>
+        <dd>IN: The value to which the packet table’s index should 
+        be set</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+	<dd>Returns non-negative on success and negative on error.</dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    GetIndex</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>hsize_t GetIndex(int& error);</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Returns the position of the current packet.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function allows the user to determine the position 
+            of the current packet.
+            <p>
+            If <code>GetIndex</code> returns <code>0</code> (zero), 
+            you must then check the value of the parameter <code>error</code>.  
+            If <code>error</code> is negative, <code>GetIndex</code> 
+            has failed; if <code>error</code> is <code>0</code> (zero), 
+            the position of the current packet is <code>0</code> (zero).
+            </dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>int& error</code> (optional)</dt>
+        <dd>OUT: Non-negative if index was successfully retrieved, 
+                    negative on failure.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns the position of the current packet on success and 
+            <code>0</code> (zero) on error.</dd>
+  </dl>
+
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    GetPacketCount</dt>
+  <dt><strong>Signatures:</strong></dt>
+    <dd><code>hsize_t GetPacketCount()</code></dd>
+    <dd><code>hsize_t GetPacketCount(int& error)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Retrieves the number of packets in the packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function is overloaded so that it can be called with or 
+            without returning an error value.  If <code>error</code> is not
+            supplied, any error value is ignored.  Using this parameter allows
+            the user to distinguish between an open packet table with 0
+            packets and an invalid packet table.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>int& error</code> (optional)</dt>
+        <dd>OUT: Non-negative if packet count was successfully retrieved, 
+            negative if packet table is invalid.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Number of packets in packet table. Returns <code>0</code> if 
+        packet table contains zero packets or on error.</dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    GetDatatype</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>hid_t GetDatatype ()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Returns the datatype of this packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function returns the identifier of the datatype used by 
+    this packet table. However, it is better to avoid using this 
+    identifier in packet table applications unless the desired 
+    functionality cannot be performed via the packet table identifier.</dd>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns a valid identifier on success or 
+    <code>H5I_INVALID_HID</code> on error.</dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    GetDataset</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>hid_t GetDataset ()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Returns the dataset of this packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function returns the identifier of the dataset of 
+    this packet table. However, it is better to avoid using this 
+    identifier in packet table applications unless the desired 
+    functionality cannot be performed via the packet table identifier.</dd>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns a valid identifier on success or 
+    <code>H5I_INVALID_HID</code> on error.</dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    GetTableId</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>hid_t GetTableId ()</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Returns the identifier of the packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function returns the packet table identifier. However, the 
+        identifier is usually not needed by applications.</dd>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns a valid identifier on success or 
+    <code>H5I_INVALID_HID</code> if the packet table is not valid.</dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    FreeBuff</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>FreeBuff(size_t numStructs, hvl_t * buffer)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Frees the buffer created when accessing data in a 
+        variable-length packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>Takes the number of <code>hvl_t</code> structs to be freed and 
+        a pointer to their location in memory.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>size_t numStructs</code></dt>
+        <dd>IN: Number of structs to be freed.</dd>
+    <dt><code>hvl_t *buffer</code></dt>
+        <dd>IN: Pointer to location.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns <code>SUCCEED</code> on success and 
+    <code>FAIL</code> on error.</dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function introduced in this release.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+<!-- NEW PAGE -->
+<!-- HEADER RIGHT "FL_Packet_Table" -->
+  <br />
+  <br />
+  <br />
+  <hr />
+<a name="FL_PacketTable"><strong>FL_Packet_Table:</strong></a>
+  <hr />
+
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    “Create” Constructor</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>FL_PacketTable(hid_t fileID, const char* ptname, 
+        hid_t dtypeID, hsize_t chunkSize)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Creates a new packet table for storing fixed-length or 
+        variable-length packets.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This constructor creates and opens a packet table, named 
+        <code>ptname</code>, in the file specified by <code>fileID</code>. 
+        Packets will be of the datatype specified by <code>dtypeID</code>. 
+        The packet table uses HDF5 chunked storage to allow it to 
+        grow. The chunk size can be specified by <code>chunkSize</code>. 
+        The chunk size affects performance, so it should be determined 
+        with care when performance is important. </dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hid_t fileID</code></dt>
+    <dd>IN: Identifier of the file or group to create the table within.</dd> 
+    <dt><code>const char * ptname</code></dt> 
+    <dd>IN: The name of the packet table to create.</dd> 
+    <dt><code>hid_t dtypeID</code></dt> 
+    <dd>IN: The datatype of a packet.</dd> 
+    <dt><code>hsize_t chunkSize</code></dt> 
+    <dd>IN: Desired chunk size; defaults to 0.</dd>
+    </dl>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+<!--        <tr>
+          <td valign="top">1.10.1
+          ??????? comment out this row in 1.10.0 version of the doc 
+          ???????
+          </td>
+          <td valign="top">Function deprecated.</td>
+        </tr>
+-->
+<!-- 
+Comment out the 1.10.1 row above in the 1.10.0 version of the doc.
+-->
+        <tr>
+          <td valign="top">1.10.0</td>
+          <td valign="top">Function revised.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    “Create” Constructor (deprecated in 1.10.0 and in 
+    1.8.17)</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>FL_PacketTable(hid_t fileID, const char* ptname, hid_t dtypeID, 
+        hsize_t chunkSize, int compression)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Creates a new packet table for storing fixed-length packets.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This constructor has been deprecated in favor of the 
+        “Create” Constructor above, which provides 
+        flexibility in the compression method.
+        <p>
+        This constructor creates and opens a packet table in the file 
+        specified by <code>fileID</code> named <code>ptname</code>. 
+        Packets will be of the datatype specified by 
+        <code>dtypeID</code>. The packet can be specified to contain 
+        data with deflate compression using the parameter 
+        <code>compression</code>.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hid_t fileID</code></dt>
+    <dd>IN: Identifier of the file or group to create the table within.</dd> 
+    <dt><code>const char * ptname</code></dt> 
+    <dd>IN: The name of the packet table to create.</dd> 
+    <dt><code>hid_t dtypeID</code></dt> 
+    <dd>IN: The datatype of a packet.</dd> 
+    <dt><code>hsize_t chunkSize</code></dt> 
+    <dd>IN: The packet table uses HDF5 chunked storage to allow it to grow. 
+        This value allows the user to set the size of a chunk. 
+        The chunk size affects performance.</dd>
+    <dt><code>int compression</code></dt> 
+    <dd>IN: Desired compression level: <code>0</code> (zero) through 
+            <code>9,</code> or <code>-1</code> for no compression.</dd>
+    </dl>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function revised and deprecated.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    “Open” Constructor</dt>
+  <dt><strong>Signature:</strong></dt>
+    <dd><code>FL_PacketTable(hid_t fileID, const char* ptname)</code></dd>
+    <dd><code>FL_PacketTable(hid_t fileID, char* ptname) 
+        (deprecated)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Opens a fixed-length packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This constructor opens an existing packet table named 
+        <code>ptname</code> in the location <code>fileID</code>. This 
+        packet table can be either fixed-length or variable-length.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hid_t fileID</code></dt>
+    <dd>IN: Identifier of the file or group containing the packet table.</dd> 
+    <dt><code>const char * ptname</code></dt> 
+    <dd>IN: The name of the packet table to open.</dd>
+    </dl>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function arguments were changed.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> 
+    AppendPacket / AppendPackets</dt>
+  <dt><strong>Signatures:</strong></dt>
+    <dd><code>int AppendPacket(void * data)</code></dd>
+    <dd><code>int AppendPackets(size_t numPackets, void *data)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Appends packets to the packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>These functions write packets to the end of the packet table.</dd>
+<!-- NEW PAGE -->
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+        <dt><code>size_t numPackets</code></dt>
+            <dd>IN: Number of packets to add.</dd>
+        <dt>void * data:</dt>
+            <dd>IN: Data to write. Must be a buffer of packets of the 
+            packet table’s datatype.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns <code>SUCCEED</code> on success and <code>FAIL</code> 
+        on error.</dd>
+  <dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+        <tr>
+          <td valign="top" align="left" width="10%">
+            <strong>Release</strong></td>
+          <td valign="top" align="left" width="90%">
+            <strong>Change</strong></td>
+        </tr>
+        <tr>
+          <td valign="top">1.10.0 and 1.8.17    </td>
+          <td valign="top">Function changed: function now works with 
+          fixed-length and variable-length packets.</td>
+        </tr>
+        </table>
+    </dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> GetPacket /
+        GetPackets</dt>
+  <dt><strong>Signatures:</strong></dt>
+    <dd><code>int GetPacket(hsize_t index, void * data)</code></dd>
+    <dd><code>int GetPackets(hsize_t startIndex, hsize_t endIndex, 
+        void * data)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Reads packets from the packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function fills a buffer, <code>data</code>, with fixed-length 
+        packets from the packet table. The one-argument function can be 
+        called to retrieve a single packet at the given index, or the 
+        two-argument function can be used to read a range of packets 
+        (zero-indexed, inclusive).</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+    <dt><code>hsize_t index</code> (single packet)</dt>
+        <dd>IN: Index of the single packet to be read.</dd>
+    <dt><code>hsize_t startIndex</code> (multiple packets)</dt>
+        <dd>IN: Index at which to start reading packets.</dd>
+    <dt><code>hsize_t endIndex</code> (multiple packets)</dt>
+        <dd>IN: Index at which to stop reading packets.</dd>
+    <dt><code>void * data</code></dt>
+        <dd>OUT: Buffer for packets being retrieved.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns <code>SUCCEED</code> on success and <code>FAIL</code> 
+    on error.</dd>
+  </dl>
+  
+  <br />
+  <hr />
+  <dl>
+  <dt style="background-color: #CCCCFF"><strong>Name:</strong> GetNextPacket 
+    / Get Next Packets</dt>
+  <dt><strong>Signatures:</strong></dt>
+    <dd><code>int GetNextPacket(void * data)</code></dd>
+    <dd><code>int GetNextPackets(size_t numPackets, void * data)</code></dd>
+  <dt><strong>Purpose:</strong></dt>
+    <dd>Iterates through packets from the packet table.</dd>
+  <dt><strong>Description:</strong></dt>
+    <dd>This function reads packets starting from the current index in 
+        the packet table and updates the index.  It can be used with 
+        the <code>ResetIndex</code> and <code>SetIndex</code> functions 
+        to iterate through the packet table. <code>GetNextPacket</code> 
+        reads a single packet, and <code>GetNextPackets</code> reads 
+        <code>numPackets</code> packets.</dd>
+  <dt><strong>Parameters:</strong></dt>
+    <dl>
+        <dt><code>size_t numPackets</code> (optional)</dt>
+            <dd>IN: The number of packets that will be read.</dd>
+        <dt><code>void * data</code></dt>
+            <dd>OUT: Buffer to hold packets that were read.</dd>
+    </dl>
+  <dt><strong>Returns:</strong></dt>
+    <dd>Returns <code>SUCCEED</code> on success and <code>FAIL</code> 
+        on error.</dd>
+  </dl>
+  
+
+
+  
+<br />
+<!-- #BeginLibraryItem "/ed_libs/NavBar_RMHL.lbi" -->
+<hr />
+<center>
+<table border=0 width=98%>
+<tr><td valign=top align=left>
+<a href="../index.html">HDF5 documents and links</a> <br />
+<a href="../H5.intro.html">Introduction to HDF5</a> <br />
+<a href="../UG/HDF5_Users_Guide-Responsive HTML5/index.html">HDF5 
+    User’s Guide</a> <br />
+<a href="index.html">Other High-level API documents</a>
+<!--
+<a href="Glossary.html">Glossary</a><br />
+-->
+</td>
+<td valign=top align=right>
+In the 
+<a href="../RM/RM_H5Front.html">HDF5 Reference Manual</a>  
+<font size=-1>
+<br />
+<a href="RM_H5DS.html">H5DS</a>  
+<a href="RM_H5IM.html">H5IM</a>  
+<a href="RM_H5LT.html">H5LT</a>  
+<a href="RM_H5PT.html">H5PT</a>  
+<a href="RM_H5TB.html">H5TB</a>  
+<a href="RM_HDF5Optimized.html">Optimized</a> 
+<br />
+<a href="../RM/RM_H5.html">H5</a>  
+<a href="../RM/RM_H5A.html">H5A</a>  
+<a href="../RM/RM_H5D.html">H5D</a>  
+<a href="../RM/RM_H5E.html">H5E</a>  
+<a href="../RM/RM_H5F.html">H5F</a>  
+<a href="../RM/RM_H5G.html">H5G</a>  
+<a href="../RM/RM_H5I.html">H5I</a>  
+<br />
+<a href="../RM/RM_H5L.html">H5L</a>  
+<a href="../RM/RM_H5O.html">H5O</a>  
+<a href="../RM/RM_H5P.html">H5P</a>  
+<a href="../RM/RM_H5R.html">H5R</a>  
+<a href="../RM/RM_H5S.html">H5S</a>  
+<a href="../RM/RM_H5T.html">H5T</a>  
+<a href="../RM/RM_H5Z.html">H5Z</a>  
+<br />
+<a href="../RM/Tools.html">Tools</a>  
+<a href="../RM/PredefDTypes.html">Datatypes</a>  
+<a href="../fortran/index.html">Fortran</a>  
+</font>
+</td></tr>
 </table>
+</center>
+<hr />
+<!-- #EndLibraryItem -->
 
-</div>
+<?php include("../ed_libs/Footer2.htm"); ?>
 
-<div class=MsoNormal align=center style='text-align:center'><span
-style='mso-fareast-font-family:"Times New Roman"'>
-
-<hr size=3 width="100%" align=center>
-
-</span></div>
-
-<p class=MsoNormal><span style='mso-fareast-font-family:"Times New Roman"'><script language="JavaScript">
+<SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
 document.writeln(' \
 <address> \
-  Last modified: 4 February 2010 <br> \
+  Last modified: 5 May 2016 <br /> \
 </address> \
 ');
 -->
-</script><o:p> </o:p></span></p>
-
-<!-- #EndLibraryItem --><?php include("../ed_libs/Footer2.htm"); ?></div>
+</SCRIPT>
 
+<br />
 </body>
-
 </html>
diff --git a/html/RM/H5/H5free_memory.htm b/html/RM/H5/H5free_memory.htm
index 90ce685..1a07e7e 100644
--- a/html/RM/H5/H5free_memory.htm
+++ b/html/RM/H5/H5free_memory.htm
@@ -24,18 +24,13 @@
 <!--__ ***********************************************************  -->
 <!-- NEW PAGE -->
 
-
-<!--__ *** HEADER RIGHT ******************************************  -->
-<!--__ Update H5function_name; leave remainder of line unchanged    -->
-<!--__ as it is also used by the PDF generator.                     -->
-<!--__ ***********************************************************  -->
 <!-- HEADER RIGHT "H5free_memory" -->
 
 <hr />
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 23 April 2014
+    Last modified: 19 May 2016
     </i></font></div></dt>
     <br />
 
@@ -52,14 +47,18 @@
     <br />
 
 <dt><strong>Description:</strong></dt>
-    <dd>In order to avoid heap corruption, allocated memory should be 
-    freed using the same library that initially allocated it. In most 
-    cases, the HDF5 API uses resources that are allocated and freed 
-    entirely by either the user or the library. In some cases, however, 
-    HDF5 API calls will allocate memory that the user must free 
-    (for example, <code>H5Tget_member_name</code>). 
-    <code>H5free_memory</code> allows the user to safely free this 
-    memory.</dd>
+    <dd><code>H5free_memory</code> frees memory that has been allocated
+    by the caller with 
+    <a href="#Library-AllocMemory"><code>H5alloc_memory</code></a> 
+    or by the HDF5 Library on behalf of the caller.
+    </p>
+    <p>
+    <a href="RM_H5T.html#Datatype-GetMemberName"><code>H5Tget_member_name</code></a>
+    provides an example of memory allocation on behalf of the caller:
+    The function returns a buffer containing the name of a compound datatype 
+    member.  It is the caller’s responsibility to eventually free 
+    that buffer with <code>H5free_memory</code>.
+    </dd>
     <br />
 
 <dt><strong>Notes:</strong></dt>
@@ -84,8 +83,8 @@
     <dd>
     <table width="100%">
     <tr valign="bottom">
-    <td width="10%"><code><em>void</em> *mem</code></td>
-    <td width="90%">IN: Buffer to be freed. Can be NULL.</td></tr>
+    <td width="10%"><code><em>void</em> *mem   </code></td>
+    <td width="90%">IN: Buffer to be freed. Can be <code>NULL</code>.</td></tr>
     </table>
     </dd>
     <br />
diff --git a/html/RM/H5A/H5Aopen_by_idx.htm b/html/RM/H5A/H5Aopen_by_idx.htm
index 299f8ff..abd1527 100644
--- a/html/RM/H5A/H5Aopen_by_idx.htm
+++ b/html/RM/H5A/H5Aopen_by_idx.htm
@@ -1,30 +1,30 @@
-
-
-<!--
-  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  * Copyright by The HDF Group.                                               *
-  * Copyright by the Board of Trustees of the University of Illinois.         *
-  * All rights reserved.                                                      *
-  *                                                                           *
-  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
-  * terms governing use, modification, and redistribution, is contained in    *
-  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
-  * of the source code distribution tree; Copyright.html can be found at the  *
-  * root level of an installed copy of the electronic HDF5 document set and   *
-  * is linked from the top-level documents page.  It can also be found at     *
-  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
-  * access to either file, you may request a copy from help at hdfgroup.org.     *
-  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * Copyright by the Board of Trustees of the University of Illinois.         *
+  * All rights reserved.                                                      *
+  *                                                                           *
+  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
+  * terms governing use, modification, and redistribution, is contained in    *
+  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
+  * of the source code distribution tree; Copyright.html can be found at the  *
+  * root level of an installed copy of the electronic HDF5 document set and   *
+  * is linked from the top-level documents page.  It can also be found at     *
+  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
+  * access to either file, you may request a copy from help at hdfgroup.org.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
 <!-- NEW PAGE -->
 <!-- HEADER RIGHT "H5Aopen_by_idx" -->
 <hr>
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-  Last modified: 9 October 2014</i></font></div></dt>
+  Last modified: 11 May 2016</i></font></div></dt>
 
   <dt><strong>Name:</strong> <a name="Annot-OpenByIdx">H5Aopen_by_idx</a>
   <dt><strong>Signature:</strong>
@@ -39,7 +39,8 @@
     )
   <p>
   <dt><strong>Purpose:</strong>
-    <dd>
+    <dd>Opens the <i>n</i>th attribute attached to an object.
+
   <p>
   <dt><strong>Description:</strong>
     <dd><code>H5Aopen_by_idx</code> opens an existing attribute 
@@ -73,6 +74,7 @@
       The attribute identifier returned by this function must be released 
       with <a href="#Annot-Close"><code>H5Aclose</code></a> 
       or resource leaks will develop.
+
   <p>
   <dt><strong>Parameters:</strong>
     <dd><table>
@@ -114,10 +116,12 @@
         <td valign="top">IN: Link access property list
         </td></tr>
     </table>
+
   <p>
   <dt><strong>Returns:</strong>
     <dd>Returns an attribute identifier if successful;
         otherwise returns a negative value.
+
   <p>
   <dt><strong>Fortran90 Interface:</strong> h5aopen_by_idx_f
     <dd>
@@ -158,15 +162,15 @@ SUBROUTINE h5aopen_by_idx_f(loc_id, obj_name, idx_type, order, n, attr_id, &
   INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id  
                               ! Link access property list
 END SUBROUTINE h5aopen_by_idx_f
-      </pre>
-
-
-  <dt><strong>See Also:</a></strong></dt>
-    <dd>
-    <a href="http://www.hdfgroup.org/HDF5/doc/Advanced/UsingIdentifiers/index.html">
-    “Using Identifiers”</a>
-    </dd>
-
+</pre>
+
+
+  <dt><strong>See Also:</a></strong></dt>
+    <dd>
+    <a href="http://www.hdfgroup.org/HDF5/doc/Advanced/UsingIdentifiers/index.html">
+    “Using Identifiers”</a>
+    </dd>
+
 
   <p>
   <dt><strong>History:</strong>
diff --git a/html/RM/H5F/H5Fare_mdc_flushes_disabled.htm b/html/RM/H5F/H5Fare_mdc_flushes_disabled_NOT_IMPLEMENTED.htm
similarity index 100%
rename from html/RM/H5F/H5Fare_mdc_flushes_disabled.htm
rename to html/RM/H5F/H5Fare_mdc_flushes_disabled_NOT_IMPLEMENTED.htm
diff --git a/html/RM/H5F/H5Fdisable_mdc_flushes.htm b/html/RM/H5F/H5Fdisable_mdc_flushes_NOT_IMPLEMENTED.htm
similarity index 100%
rename from html/RM/H5F/H5Fdisable_mdc_flushes.htm
rename to html/RM/H5F/H5Fdisable_mdc_flushes_NOT_IMPLEMENTED.htm
diff --git a/html/RM/H5F/H5Fenable_mdc_flushes.htm b/html/RM/H5F/H5Fenable_mdc_flushes_NOT_IMPLEMENTED.htm
similarity index 100%
rename from html/RM/H5F/H5Fenable_mdc_flushes.htm
rename to html/RM/H5F/H5Fenable_mdc_flushes_NOT_IMPLEMENTED.htm
diff --git a/html/RM/H5F/H5Fget_mdc_flush_disabled_obj_ids.htm b/html/RM/H5F/H5Fget_mdc_flush_disabled_obj_ids_NOT_IMPLEMENTED.htm
similarity index 100%
rename from html/RM/H5F/H5Fget_mdc_flush_disabled_obj_ids.htm
rename to html/RM/H5F/H5Fget_mdc_flush_disabled_obj_ids_NOT_IMPLEMENTED.htm
diff --git a/html/RM/H5O/H5Oenable_mdc_flushes.htm b/html/RM/H5O/H5Oenable_mdc_flushes.htm
index 7b02b48..30cba9c 100644
--- a/html/RM/H5O/H5Oenable_mdc_flushes.htm
+++ b/html/RM/H5O/H5Oenable_mdc_flushes.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 28 January 2016
+    Last modified: 13 April 2016
     </i></font></div></dt>
     <br />
 
@@ -42,8 +42,8 @@
     <br />
 
 <dt><strong>Purpose:</strong></dt>
-    <dd>Returns the cache entries associated with an HDF5 object to the 
-        default metadata flush and eviction algorithm.</dd>
+    <dd>Enables flushing of dirty metadata entries from a 
+        file’s metadata cache.</dd>
     <br />
 
 <dt><strong>Description:</strong></dt>
@@ -67,7 +67,7 @@
         Only <code>hid_t</code> identifiers that represent these objects 
         can be passed to the function.
 
-        <p>Passing in a <code>hid_t</code> identifier that represents any 
+        <p>Passing in an <code>hid_t</code> identifier that represents any 
         other HDF5 entity is considered an error. </p>
 
         <p>It is an error to pass an HDF5 file identifier (obtained from 
diff --git a/html/RM/H5P/H5Pget_efile_prefix.htm b/html/RM/H5P/H5Pget_efile_prefix.htm
new file mode 100644
index 0000000..1d5b7b5
--- /dev/null
+++ b/html/RM/H5P/H5Pget_efile_prefix.htm
@@ -0,0 +1,162 @@
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * All rights reserved.                                                      *
+  *                                                                           *
+  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
+  * terms governing use, modification, and redistribution, is contained in    *
+  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
+  * of the source code distribution tree; Copyright.html can be found at the  *
+  * root level of an installed copy of the electronic HDF5 document set and   *
+  * is linked from the top-level documents page.  It can also be found at     *
+  * http://www.hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have      *
+  * access to either file, you may request a copy from help at hdfgroup.org.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+<!--__ ***********************************************************  -->
+<!--__ Do not alter the next line; it is used by the PDF generator. -->
+<!--__ ***********************************************************  -->
+<!-- NEW PAGE -->
+<!-- HEADER RIGHT "H5Pget_efile_prefix" -->
+
+<hr />
+<dl>
+
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 26 April 2016
+    </i></font></div></dt>
+    <br />
+
+<dt><strong>Name:</strong> 
+    <a name="Property-GetEfilePrefix">H5Pget_efile_prefix</a>
+    </dt>
+    <br />
+
+<dt><strong>Signature:</strong>
+    <dd><code><em>ssize_t</em> H5Pget_efile_prefix(
+        <em>hid_t</em> dapl_id,
+        <em>const char</em> *prefix,
+        <em>size_t</em> size
+        )</code>
+    </dd></dt>
+    <br />
+
+<dt><strong>Purpose:</strong>
+    <dd>Retrieves the prefix for external raw data storage files 
+        as set in the dataset access property list.
+    </dd></dt>
+    <br />
+
+<dt><strong>Description:</strong>
+    <dd><code>H5Pget_efile_prefix</code> retrieves the 
+        file system path prefix for locating external files associated with
+        a dataset that uses external storage. This will be the value
+        set with <code>H5Pset_efile_prefix</code> or the HDF5 Library’s
+        default.
+        </p>
+        <p>
+        The value of <code>size</code> is the size in bytes of the prefix, 
+        including the <code>NULL</code> terminator. 
+        If the size is unknown, a preliminary <code>H5Pget_elink_prefix</code>
+        call with the pointer <code>prefix</code> set to <code>NULL</code> 
+        will return the size of the prefix without the <code>NULL</code> 
+        terminator.
+        </p>
+        <p>
+        The <code>prefix</code> buffer must be allocated by the caller.
+        In a call that retrieves the actual prefix, that buffer must be of 
+        the size specified in <code>size</code>.
+        </p>
+        <p>
+    </dd></dt>
+    <br />
+
+<dt><strong>Note:</strong>
+    <dd>See <a href="#Property-SetEfilePrefix">
+        <code>H5Pset_efile_prefix</code></a> for a more complete description 
+        of file location behavior and for notes on the use of the
+        <code>HDF5_EXTFILE_PREFIX</code> environment variable.
+    </dd></dt>
+    <br />
+    
+<dt><strong>Parameters:</strong>
+    <dd><table width="100%">
+        <tr>
+            <td width="15%" valign="top"><code><em>hid_t</em> 
+                dapl_id</code></td>
+            <td width="5%"><code> </code></td>
+            <td valign="top">IN: Dataset access property list identifier</td>
+        </tr><tr>
+            <td valign="top"><code><em>const char</em> *prefix</code></td>
+            <td><code> </code></td>
+            <td valign="top">IN/OUT: Dataset external storage prefix in UTF-8
+                or ASCII
+                <br />
+                <i>(Path and filename must be ASCII on Windows systems.)</i>
+                </td>
+        </tr><tr>
+            <td valign="top"><code><em>size_t</em> 
+                size</code></td>
+            <td width="5%"><code> </code></td>
+            <td valign="top">IN: Size of prefix buffer in bytes</td>
+        </tr>
+    </table></dd>
+    </dt>
+    <br />
+    
+<dt><strong>Returns:</strong>
+    <dd>Returns the size of <code>prefix</code> and the 
+        prefix string will be stored in <code>prefix</code> if successful.  
+        <br />
+        Otherwise returns a negative value and the contents of 
+        <code>prefix</code> will be undefined.</dd>
+    </dt>
+    <br />
+
+<dt><strong>Fortran Interface:</strong></dt>
+    <dd>None</dd>
+    </dt>
+    <br />
+
+<dt><strong>See Also:</strong></dt>
+    <table width="100%" border="0">
+    <tr><td width="50%"align="left" valign="top">
+        <ul>
+          <li><a href="#Property-SetEfilePrefix"><code>H5Pset_efile_prefix</code></a></li>
+<!--
+          <li><a href="#Property-GetEfilePrefix"><code>H5Pget_efile_prefix</code></a></li>
+-->
+          <li><a href="#Property-SetExternal"><code>H5Pset_external</code></a></li>
+        </ul>
+    </td></tr>
+    </table>
+    <br />
+
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+    <tr>
+        <td valign="top" align="left" width="10%">
+        <strong>Release</strong>    </td>
+        <td valign="top" align="left">
+        <strong>Change</strong></td>
+    </tr><tr>
+        <td valign="top">1.10.0 and 1.8.17   
+            </td>
+        <td valign="top">
+        C function introduced in these releases.</td>
+    </tr>
+    </table>
+    </dd>
+
+</dl>
+<br />
+<br />
+<br />
+
+
+
diff --git a/html/RM/H5P/H5Pget_layout.htm b/html/RM/H5P/H5Pget_layout.htm
index cd78085..b650586 100644
--- a/html/RM/H5P/H5Pget_layout.htm
+++ b/html/RM/H5P/H5Pget_layout.htm
@@ -24,7 +24,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 18 March 2016
+      Last modified: 21 April 2016
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-GetLayout">H5Pget_layout</a>
@@ -98,7 +98,7 @@ END SUBROUTINE h5pget_layout_f
         </pre>
 
 <dt><strong>See Also:</strong></dt>
-    <dd>Virtual datasets:   <a href="H5Pset_virtual.htm">H5Pset_virtual</a>
+    <dd>Virtual datasets:   <a href="#Property-SetVirtual">H5Pset_virtual</a>
     </dd>
     <br />
 
diff --git a/html/RM/H5P/H5Pget_virtual_count.htm b/html/RM/H5P/H5Pget_virtual_count.htm
index 087a129..5b592c7 100644
--- a/html/RM/H5P/H5Pget_virtual_count.htm
+++ b/html/RM/H5P/H5Pget_virtual_count.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -99,33 +99,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
 <!--
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
 -->
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pget_virtual_dsetname.htm b/html/RM/H5P/H5Pget_virtual_dsetname.htm
index 1e0c128..99f39b3 100644
--- a/html/RM/H5P/H5Pget_virtual_dsetname.htm
+++ b/html/RM/H5P/H5Pget_virtual_dsetname.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -138,33 +138,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
 <!--
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
 -->
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pget_virtual_filename.htm b/html/RM/H5P/H5Pget_virtual_filename.htm
index 30fbce1..713ce94 100644
--- a/html/RM/H5P/H5Pget_virtual_filename.htm
+++ b/html/RM/H5P/H5Pget_virtual_filename.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -140,33 +140,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
 <!--
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
 -->
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pget_virtual_printf_gap.htm b/html/RM/H5P/H5Pget_virtual_printf_gap.htm
index 8ab97b1..c1b8e93 100644
--- a/html/RM/H5P/H5Pget_virtual_printf_gap.htm
+++ b/html/RM/H5P/H5Pget_virtual_printf_gap.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -112,33 +112,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
 <!--
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
 -->
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pget_virtual_srcspace.htm b/html/RM/H5P/H5Pget_virtual_srcspace.htm
index ded6a2c..13b1a8e 100644
--- a/html/RM/H5P/H5Pget_virtual_srcspace.htm
+++ b/html/RM/H5P/H5Pget_virtual_srcspace.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -108,33 +108,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
 <!--
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
 -->
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pget_virtual_view.htm b/html/RM/H5P/H5Pget_virtual_view.htm
index 0390660..f757ed6 100644
--- a/html/RM/H5P/H5Pget_virtual_view.htm
+++ b/html/RM/H5P/H5Pget_virtual_view.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -110,32 +110,32 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
 <!--
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
 -->
     </td></tr>
     </table>
diff --git a/html/RM/H5P/H5Pget_virtual_vspace.htm b/html/RM/H5P/H5Pget_virtual_vspace.htm
index 6b20d8c..c7e700a 100644
--- a/html/RM/H5P/H5Pget_virtual_vspace.htm
+++ b/html/RM/H5P/H5Pget_virtual_vspace.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -108,33 +108,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
 <!--
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
 -->
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pset_efile_prefix.htm b/html/RM/H5P/H5Pset_efile_prefix.htm
new file mode 100644
index 0000000..f1a10eb
--- /dev/null
+++ b/html/RM/H5P/H5Pset_efile_prefix.htm
@@ -0,0 +1,191 @@
+
+
+<!--
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+  * Copyright by The HDF Group.                                               *
+  * All rights reserved.                                                      *
+  *                                                                           *
+  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
+  * terms governing use, modification, and redistribution, is contained in    *
+  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
+  * of the source code distribution tree; Copyright.html can be found at the  *
+  * root level of an installed copy of the electronic HDF5 document set and   *
+  * is linked from the top-level documents page.  It can also be found at     *
+  * http://www.hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have      *
+  * access to either file, you may request a copy from help at hdfgroup.org.     *
+  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ -->
+
+
+<!--__ ***********************************************************  -->
+<!--__ Do not alter the next line; it is used by the PDF generator. -->
+<!--__ ***********************************************************  -->
+<!-- NEW PAGE -->
+<!-- HEADER RIGHT "H5Pset_efile_prefix" -->
+
+<hr />
+<dl>
+
+<dt><div align="right"><font color="999999" size="-1"><i>
+    Last modified: 26 April 2016
+    </i></font></div></dt>
+    <br />
+
+<dt><strong>Name:</strong> 
+    <a name="Property-SetEfilePrefix">H5Pset_efile_prefix</a>
+    </dt>
+    <br />
+
+<dt><strong>Signature:</strong>
+    <dd><code><em>herr_t</em> H5Pset_efile_prefix(
+        <em>hid_t</em> dapl_id,
+        <em>const char</em> *prefix
+        )</code>
+    </dd></dt>
+    <br />
+
+<dt><strong>Purpose:</strong>
+    <dd>Sets the external dataset storage file prefix
+        in the dataset access property list.
+    </dd></dt>
+    <br />
+
+<dt><strong>Description:</strong>
+    <dd><code>H5Pset_efile_prefix</code> 
+        sets the prefix used to locate raw data files for a dataset 
+        that uses external storage.
+        This prefix can provide either an absolute path or a relative path
+        to the external files.
+        </p>
+        <p>
+        <code>H5Pset_efile_prefix</code> is used in conjunction with
+        <a href="#Property-SetExternal"><code>H5Pset_external</code></a>
+        to control the behavior of the HDF5 Library when searching for the 
+        raw data files associated with a dataset that uses external storage:
+        <ul>
+          <li>The default behavior of the library is to search for the 
+              dataset’s external storage raw data files in the same 
+              directory as the HDF5 file which contains the dataset.
+          <li>If the prefix is set to an absolute path, the target directory 
+              will be searched for the dataset’s external storage 
+              raw data files.
+          <li>If the prefix is set to a relative path, the target directory, 
+              relative to the current working directory, will be searched 
+              for the dataset’s external storage raw data files.
+          <li>If the prefix is set to a relative path that begins with 
+              the special token <code>${ORIGIN}</code>, that directory, 
+              relative to the HDF5 file containing the dataset, 
+              will be searched for the dataset’s external storage 
+              raw data files.
+        </ul>
+        </p>
+        <p>
+        The <code>HDF5_EXTFILE_PREFIX</code> environment variable can 
+        be used to override the above behavior 
+        (the environment variable supersedes the API call). 
+        Setting the variable to a path string and calling 
+        <code>H5Dcreate</code> or <code>H5Dopen</code> is the equivalent 
+        of calling <code>H5Pset_efile_prefix</code> and calling the same 
+        create or open function. The environment variable is checked at 
+        the time of the create or open action and copied so it can be 
+        safely changed after the 
+        <code>H5Dcreate</code> or <code>H5Dopen</code> call.
+        </p>
+        <p>
+        Calling <code>H5Pset_efile_prefix</code> with <code>prefix</code>
+        set to <code>NULL</code> or the empty string returns the
+        search path to the default.  The result would be the same as if
+        <code>H5Pset_efile_prefix</code> had never been called.
+        </p>
+    </dd></dt>
+    <br />
+
+<dt><strong>Notes:</strong>
+    <dd>If the external file prefix is not an absolute path and the
+        HDF5 file is moved, the external storage files will also need to 
+        be moved so they can be accessed at the new location.
+        </p>
+        <p>
+        As stated above, the use of the <code>HDF5_EXTFILE_PREFIX</code> 
+        environment variable overrides any property list setting.
+        <code>H5Pset_efile_prefix</code> and <code>H5Pget_efile_prefix</code>, 
+        being property functions, set and retrieve only the property list 
+        setting; they are unaware of the environment variable. 
+        </p>
+        <p>
+        On Windows, the prefix must be an ASCII string since the 
+        Windows standard C library’s I/O functions cannot handle 
+        UTF-8 file names.
+        </p>
+    </dd></dt>
+    <br />
+    
+<dt><strong>Parameters:</strong>
+    <dd><table width="100%">
+        <tr>
+            <td width="15%" valign="top"><code><em>hid_t</em> 
+                dapl_id</code></td>
+            <td width="5%"><code> </code></td>
+            <td valign="top">IN: Dataset access property list identifier</td>
+        </tr><tr>
+            <td valign="top"><code><em>const char</em> *prefix</code></td>
+            <td><code> </code></td>
+            <td valign="top">IN: Dataset external storage prefix in UTF-8
+                or ASCII
+                <br />
+                <i>(Path and filename must be ASCII on Windows systems.)</i>
+                </td>
+        </tr>
+    </table></dd>
+    </dt>
+    <br />
+    
+<dt><strong>Returns:</strong>
+    <dd>Returns a non-negative value if successful;
+        otherwise returns a negative value.</dd>
+    </dt>
+    <br />
+
+<dt><strong>Fortran Interface:</strong></dt>
+    <dd>None</dd>
+    </dt>
+    <br />
+
+<dt><strong>See Also:</strong></dt>
+    <table width="100%" border="0">
+    <tr><td width="50%"align="left" valign="top">
+        <ul>
+<!--
+          <li><a href="#Property-SetEfilePrefix"><code>H5Pset_efile_prefix</code></a></li>
+-->
+          <li><a href="#Property-GetEfilePrefix"><code>H5Pget_efile_prefix</code></a></li>
+          <li><a href="#Property-SetExternal"><code>H5Pset_external</code></a></li>
+        </ul>
+    </td></tr>
+    </table>
+    <br />
+
+<dt><strong>History:</strong></dt>
+    <dd>
+    <table width="90%">
+    <tr>
+        <td valign="top" align="left" width="10%">
+        <strong>Release</strong>    </td>
+        <td valign="top" align="left">
+        <strong>Change</strong></td>
+    </tr><tr>
+        <td valign="top">1.10.0 and 1.8.17   
+            </td>
+        <td valign="top">
+        C function introduced in these releases.</td>
+    </tr>
+    </table>
+    </dd>
+
+</dl>
+<br />
+<br />
+<br />
+
+
+
diff --git a/html/RM/H5P/H5Pset_layout.htm b/html/RM/H5P/H5Pset_layout.htm
index 7836330..4588639 100644
--- a/html/RM/H5P/H5Pset_layout.htm
+++ b/html/RM/H5P/H5Pset_layout.htm
@@ -24,7 +24,7 @@
 <dl>
 
   <dt><div align=right><font color=999999 size=-1><i>
-      Last modified: 16 March 2016
+      Last modified: 21 April 2016
       </i></font></div>
 
   <dt><strong>Name:</strong> <a name="Property-SetLayout">H5Pset_layout</a>
@@ -108,7 +108,7 @@ END SUBROUTINE h5pset_layout_f
     </pre>
 
 <dt><strong>See Also:</strong></dt>
-    <dd>Virtual datasets:   <a href="H5Pset_virtual.htm">H5Pset_virtual</a>
+    <dd>Virtual datasets:   <a href="#Property-SetVirtual">H5Pset_virtual</a>
     </dd>
     <br />
 
diff --git a/html/RM/H5P/H5Pset_virtual.htm b/html/RM/H5P/H5Pset_virtual.htm
index 77f4251..bb362ad 100644
--- a/html/RM/H5P/H5Pset_virtual.htm
+++ b/html/RM/H5P/H5Pset_virtual.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -167,33 +167,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
 <!--
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
 -->
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pset_virtual_printf_gap.htm b/html/RM/H5P/H5Pset_virtual_printf_gap.htm
index 17286d6..68a1bfc 100644
--- a/html/RM/H5P/H5Pset_virtual_printf_gap.htm
+++ b/html/RM/H5P/H5Pset_virtual_printf_gap.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -130,33 +130,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
 <!--
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
 -->
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5P/H5Pset_virtual_view.htm b/html/RM/H5P/H5Pset_virtual_view.htm
index 428ea5d..a814e5d 100644
--- a/html/RM/H5P/H5Pset_virtual_view.htm
+++ b/html/RM/H5P/H5Pset_virtual_view.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -128,33 +128,33 @@
     <dd>
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/VDS/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="RM_H5S.html#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
 <!--
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
+          <li><a href="#Property-SetVirtualView">H5Pset_virtual_view</a></li>
 -->
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
     </dd>
diff --git a/html/RM/H5S/H5Sget_regular_hyperslab.htm b/html/RM/H5S/H5Sget_regular_hyperslab.htm
index c81fd63..d520a3e 100644
--- a/html/RM/H5S/H5Sget_regular_hyperslab.htm
+++ b/html/RM/H5S/H5Sget_regular_hyperslab.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -128,42 +128,42 @@
     <br />
 
 <dt><strong>See Also:</strong></dt>
-    <dd><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a>
+    <dd><a href="#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a>
         <br />
-        <a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+        <a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
         <br /> 
         <br />
-        Virtual datasets:   <a href="H5Pset_virtual.htm">H5Pset_virtual</a>
+        Virtual datasets:   <a href="RM_H5P.html#Property-SetVirtual">H5Pset_virtual</a>
 <!--
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 -->
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
 <!--
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="RM_H5P.html#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="RM_H5P.html#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="RM_H5P.html#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="RM_H5P.html#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="RM_H5P.html#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
 -->
diff --git a/html/RM/H5S/H5Sis_regular_hyperslab.htm b/html/RM/H5S/H5Sis_regular_hyperslab.htm
index 97f1bca..dc13e97 100644
--- a/html/RM/H5S/H5Sis_regular_hyperslab.htm
+++ b/html/RM/H5S/H5Sis_regular_hyperslab.htm
@@ -27,7 +27,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 18 March 2016
+    Last modified: 22 April 2016
     </i></font></div></dt>
     <br />
 
@@ -99,42 +99,42 @@
     <br />
 
 <dt><strong>See Also:</strong></dt>
-    <dd><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a>
+    <dd><a href="#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a>
         <br />
-        <a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+        <a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
         <br /> 
         <br />
-        Virtual datasets:   <a href="H5Pset_virtual.htm">H5Pset_virtual</a>
+        Virtual datasets:   <a href="RM_H5P.html#Property-SetVirtual">H5Pset_virtual</a>
 <!--
     <table width="100%" border="0">
     <tr><td width="50%"align="left" valign="top">
-          <li>“<a href="../NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
-          <li>“<a href="UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
+          <li>“<a href="/HDF5/docNewFeatures/NewFeaturesVirtualDatasetDocs.html">Virtual Dataset Overview</a>”</li>
+          <li>“<a href="/HDF5/docNewFeatures/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”
               <br /> </li>
 -->
 <!--
-          <li>“<a href="/HDF5/doc/Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
+          <li>“<a href="../Advanced/UsingVirtualDatasets/index.html">Using HDF5 Virtual Datasets</a>”</li>
 -->
 <!--
            <br />
           <b>Supporting functions:</b>
-          <li><a href="H5Pset_layout.htm">H5Pset_layout</a></li>
-          <li><a href="H5Pget_layout.htm">H5Pget_layout</a></li>
-          <li><a href="H5Sis_regular_hyperslab.htm">H5Sis_regular_hyperslab</a></li>
-          <li><a href="H5Sget_regular_hyperslab.htm">H5Sget_regular_hyperslab</a></li>
-          <li><a href="/HDF5/doc/RM/RM_H5S.html#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
+          <li><a href="RM_H5P.html#Property-SetLayout">H5Pset_layout</a></li>
+          <li><a href="RM_H5P.html#Property-GetLayout">H5Pget_layout</a></li>
+          <li><a href="#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a></li>
+          <li><a href="#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a></li>
+          <li><a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a></li>
     </td><td width="50%"align="left" valign="top">
           <b>VDS functions:</b>
-          <li><a href="H5Pset_virtual.htm">H5Pset_virtual</a></li>
-          <li><a href="H5Pget_virtual_count.htm">H5Pget_virtual_count</a></li>
-          <li><a href="H5Pget_virtual_vspace.htm">H5Pget_virtual_vspace</a></li>
-          <li><a href="H5Pget_virtual_srcspace.htm">H5Pget_virtual_srcspace</a></li>
-          <li><a href="H5Pget_virtual_filename.htm">H5Pget_virtual_filename</a></li>
-          <li><a href="H5Pget_virtual_dsetname.htm">H5Pget_virtual_dsetname</a></li>
-          <li><a href="H5Pset_virtual_printf_gap.htm">H5Pset_virtual_printf_gap</a></li>
-          <li><a href="H5Pget_virtual_printf_gap.htm">H5Pget_virtual_printf_gap</a></li>
-          <li><a href="H5Pset_virtual_view.htm">H5Pset_virtual_view</a></li>
-          <li><a href="H5Pget_virtual_view.htm">H5Pget_virtual_view</a>
+          <li><a href="RM_H5P.html#Property-SetVirtual">H5Pset_virtual</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualCount">H5Pget_virtual_count</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualVspace">H5Pget_virtual_vspace</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualFilename">H5Pget_virtual_filename</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a></li>
+          <li><a href="RM_H5P.html#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a></li>
+          <li><a href="RM_H5P.html#Property-SetVirtualView">H5Pset_virtual_view</a></li>
+          <li><a href="RM_H5P.html#Property-GetVirtualView">H5Pget_virtual_view</a>
     </td></tr>
     </table>
 -->
diff --git a/html/RM/H5T/H5Tget_member_name.htm b/html/RM/H5T/H5Tget_member_name.htm
index 136b77d..041fdf4 100644
--- a/html/RM/H5T/H5Tget_member_name.htm
+++ b/html/RM/H5T/H5Tget_member_name.htm
@@ -1,4 +1,4 @@
-
+
 
 <!--
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -24,7 +24,7 @@
 <dl>
 
 <dt><div align=right><font color=999999 size=-1><i>
-    Last modified: 18 August 2010
+    Last modified: 19 May 2016
     </i></font></div>
 
 <dt><strong>Name:</strong> <a name="Datatype-GetMemberName">H5Tget_member_name</a>
@@ -50,18 +50,18 @@
         with index values of 0 through <em>N</em>-1, where <em>N</em> 
         is the value returned by <code>H5Tget_nmembers</code>.  
         <p>
-        A buffer to receive the name of the field is 
-        allocated with <code>malloc()</code> and the caller is responsible 
-        for freeing the memory used.
+        The HDF5 Library allocates a buffer to receive the name of the field.
+        The caller must subsequently free the buffer with
+        <a href="RM_H5.html#Library-FreeMemory"><code>H5free_memory</code></a>.
 
 <p>
 <dt><strong>Parameters:</strong>
     <dd><table>
         <tr>
-            <td valign="top"><em>hid_t</em> <code>tdype_id    </code></td>
+            <td valign="top"><em>hid_t</em> <code>tdype_id</code></td>
             <td valign="top">IN: Identifier of datatype to query.</td></tr>
         <tr>
-            <td valign="top"><em>unsigned</em> <code>field_idx   </code></td>
+            <td valign="top"><em>unsigned</em> <code>field_idx   </code></td>
             <td valign="top">IN: Zero-based index of the field or element 
                 whose name is to be retrieved.</td></tr>
     </table></dd>
@@ -99,7 +99,7 @@ END SUBROUTINE h5tget_member_name_f
         <tr>
           <td valign="top">1.6.4</td>
           <td valign="top">
-            <code>membno</code> parameter type changed to 
+            <code>field_idx</code> parameter type changed to 
             <em>unsigned</em>.</td></tr>
     </table></dd>
 </dl>
diff --git a/html/RM/RM_H5P.html b/html/RM/RM_H5P.html
index 9303387..fb26f81 100644
--- a/html/RM/RM_H5P.html
+++ b/html/RM/RM_H5P.html
@@ -613,12 +613,12 @@ Symbolic notation in the following index is interpreted as follows:
     <a href="#Property-SetFillTime">H5Pset_fill_time</a>
     <br />
     <a href="#Property-GetFillTime">H5Pget_fill_time</a>
-    </td>
-<td width="32%" align="left" valign="top">
+    <br />
     <a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
     <br />
     <a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
-    <br />
+    </td>
+<td width="32%" align="left" valign="top">
     <a href="#Property-SetFilter">H5Pset_filter</a>
     <br />
     <a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
@@ -638,8 +638,7 @@ Symbolic notation in the following index is interpreted as follows:
            *
     <br />
     <a href="#Property-GetFilterById2">H5Pget_filter_by_id2</a>
-    </td>
-<td width="32%" align="left" valign="top">
+    <br />
     <a href="#Property-ModifyFilter">H5Pmodify_filter</a>
     <br />
     <a href="#Property-RemoveFilter">H5Premove_filter</a>
@@ -647,7 +646,8 @@ Symbolic notation in the following index is interpreted as follows:
     <a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
     <br />
     <a href="#Property-SetNbit">H5Pset_nbit</a>
-    <br />
+    </td>
+<td width="32%" align="left" valign="top">
     <a href="#Property-SetScaleoffset">H5Pset_scaleoffset</a>
     <br />
     <a href="#Property-SetShuffle">H5Pset_shuffle</a>
@@ -659,6 +659,20 @@ Symbolic notation in the following index is interpreted as follows:
     <a href="#Property-GetExternalCount">H5Pget_external_count</a>
     <br />
     <a href="#Property-GetExternal">H5Pget_external</a>
+    <br />
+    <a href="#Property-SetVirtual">H5Pset_virtual</a>
+    <br />
+    <a href="#Property-GetVirtualCount">H5Pget_virtual_count</a>
+    <br />
+    <a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a>
+    <br />
+    <a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a>
+    <br />
+    <a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a>
+    <br />
+    <a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a>
+
+
     </td></tr>
 </table>
 
@@ -676,14 +690,24 @@ Symbolic notation in the following index is interpreted as follows:
     <a href="#Property-SetChunkCache">H5Pset_chunk_cache</a>
     <br />
     <a href="#Property-GetChunkCache">H5Pget_chunk_cache</a>
-    </td>
-<td width="32%" align="left" valign="top">
+    <br />
     <a href="#Property-SetAllCollMetadataOps">H5Pset_all_coll_metadata_ops</a>
     <br />
     <a href="#Property-GetAllCollMetadataOps">H5Pget_all_coll_metadata_ops</a>
     </td>
 <td width="32%" align="left" valign="top">
-     
+    <a href="#Property-SetEfilePrefix">H5Pset_efile_prefix</a>
+    <br />
+    <a href="#Property-GetEfilePrefix">H5Pget_efile_prefix</a>
+    </td>
+<td width="32%" align="left" valign="top">
+    <a href="#Property-SetVirtualView">H5Pset_virtual_view</a>
+    <br />
+    <a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
+    <br />
+    <a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a>
+    <br />
+    <a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a>
     </td></tr>
 </table>
 
@@ -1834,6 +1858,8 @@ See further notes in the description of each function.
       <br />
       <a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
       <br />
+      <a href="#Property-GetEfilePrefix">H5Pget_efile_prefix</a>
+      <br />
       <a href="#Property-GetELinkAccFlags">H5Pget_elink_acc_flags</a>
       <br />
       <a href="#Property-GetELinkCb">H5Pget_elink_cb</a>
@@ -1895,15 +1921,15 @@ See further notes in the description of each function.
              *
       <br />
       <a href="#Property-GetFilterById2">H5Pget_filter_by_id2</a>
+      <br />
+      <a href="#Property-GetGCReferences">H5Pget_gc_references</a>
+      <br />
+      <a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
     </td>
 
     <td>   </td>
 
     <td valign="top">
-      <a href="#Property-GetGCReferences">H5Pget_gc_references</a>
-      <br />
-      <a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
-      <br />
       <a href="#Property-GetIstoreK">H5Pget_istore_k</a>
       <br />
       <a href="#Property-GetLayout">H5Pget_layout</a>
@@ -1963,6 +1989,20 @@ See further notes in the description of each function.
       <br />
       <a href="#Property-GetVersion">H5Pget_version</a>
       <br />
+      <a href="#Property-GetVirtualCount">H5Pget_virtual_count</a>
+      <br />
+      <a href="#Property-GetVirtualDsetname">H5Pget_virtual_dsetname</a>
+      <br />
+      <a href="#Property-GetVirtualFilename">H5Pget_virtual_filename</a>
+      <br />
+      <a href="#Property-GetVirtualPrintfGap">H5Pget_virtual_printf_gap</a>
+      <br />
+      <a href="#Property-GetVirtualSrcspace">H5Pget_virtual_srcspace</a>
+      <br />
+      <a href="#Property-GetVirtualView">H5Pget_virtual_view</a>
+      <br />
+      <a href="#Property-GetVirtualVspace">H5Pget_virtual_vspace</a>
+      <br />
       <a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
       <br />
       <a href="#Property-Insert"><i>H5Pinsert</i></a>
@@ -2026,13 +2066,13 @@ See further notes in the description of each function.
       <a href="#Property-SetDeflate">H5Pset_deflate</a>
       <br />
       <a href="#Property-SetDriver">H5Pset_driver</a>
-      <br />
-      <a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>   ||
     </td>
 
     <td>   </td>
 
     <td valign="top">
+      <a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>   ||
+      <br />
       <a href="#Property-SetDxplMpioChunkOpt">H5Pset_dxpl_mpio_chunk_opt</a>   ||
       <br />
       <a href="#Property-SetDxplMpioChunkOptNum">H5Pset_dxpl_mpio_chunk_opt_num</a>   ||
@@ -2043,6 +2083,8 @@ See further notes in the description of each function.
       <br />
       <a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
       <br />
+      <a href="#Property-SetEfilePrefix">H5Pset_efile_prefix</a>
+      <br />
       <a href="#Property-SetELinkAccFlags">H5Pset_elink_acc_flags</a>
       <br />
       <a href="#Property-SetELinkCb">H5Pset_elink_cb</a>
@@ -2162,6 +2204,12 @@ See further notes in the description of each function.
       <br />
       <a href="#Property-SetUserblock">H5Pset_userblock</a>
       <br />
+      <a href="#Property-SetVirtual">H5Pset_virtual</a>
+      <br />
+      <a href="#Property-SetVirtualView">H5Pset_virtual_view</a>
+      <br />
+      <a href="#Property-SetVirtualPrintfGap">H5Pset_virtual_printf_gap</a>
+      <br />
       <a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
       <br />
       <a href="#Property-Unregister">H5Punregister</a>
@@ -2868,12 +2916,12 @@ See further notes in the description of each function.
     <a href="#Property-SetFillTime">h5pset_fill_time_f</a>
     <br />
     <a href="#Property-GetFillTime">h5pget_fill_time_f</a>
-    </td>
-<td width="32%" align="left" valign="top">
+    <br />
     <a href="#Property-SetAllocTime">h5pset_alloc_time_f</a>
     <br />
     <a href="#Property-GetAllocTime">h5pget_alloc_time_f</a>
-    <br />
+    </td>
+<td width="32%" align="left" valign="top">
     <a href="#Property-SetFilter">h5pset_filter_f</a>
 <!-- FOR USE WITH ELECTRONIC VERSION ---------------------------------------->
 <!--    <br />
@@ -2889,8 +2937,7 @@ See further notes in the description of each function.
     <a href="#Property-ModifyFilter">h5pmodify_filter_f</a>
     <br />
     <a href="#Property-RemoveFilter">h5premove_filter_f</a>
-    </td>
-<td width="32%" align="left" valign="top">
+    <br />
     <a href="#Property-SetFletcher32">h5pset_fletcher32_f</a>
     <br />
     <a href="#Property-SetNbit">h5pset_nbit_f</a>
@@ -2900,12 +2947,25 @@ See further notes in the description of each function.
     <a href="#Property-SetShuffle">h5pset_shuffle_f</a>
     <br />
     <a href="#Property-SetSzip">h5pset_szip_f</a>
-    <br />
+    </td>
+<td width="32%" align="left" valign="top">
     <a href="#Property-SetExternal">h5pset_external_f</a>
     <br />
     <a href="#Property-GetExternalCount">h5pget_external_count_f</a>
     <br />
     <a href="#Property-GetExternal">h5pget_external_f</a>
+    <br />
+    <a href="#Property-SetVirtual">h5pset_virtual_f</a>
+    <br />
+    <a href="#Property-GetVirtualCount">h5pget_virtual_count_f</a>
+    <br />
+    <a href="#Property-GetVirtualDsetname">h5pget_virtual_dsetname_f</a>
+    <br />
+    <a href="#Property-GetVirtualFilename">h5pget_virtual_filename_f</a>
+    <br />
+    <a href="#Property-GetVirtualSrcspace">h5pget_virtual_srcspace_f</a>
+    <br />
+    <a href="#Property-GetVirtualVspace">h5pget_virtual_vspace_f</a>
     </td></tr>
 </table>
 
@@ -2930,7 +2990,13 @@ See further notes in the description of each function.
     <a href="#Property-GetAllCollMetadataOps">h5pget_all_coll_metadata_ops_f</a>
     </td>
 <td width="32%" align="left" valign="top">
-     
+    <a href="#Property-SetVirtualView">h5pset_virtual_view_f</a>
+    <br />
+    <a href="#Property-GetVirtualView">h5pget_virtual_view_f</a>
+    <br />
+    <a href="#Property-SetVirtualPrintfGap">h5pset_virtual_printf_gap_f</a>
+    <br />
+    <a href="#Property-GetVirtualPrintfGap">h5pget_virtual_printf_gap_f</a>
     </td></tr>
 </table>
 
@@ -3554,6 +3620,7 @@ See further notes in the description of each function.
 <?php include("H5P/H5Pget_dxpl_mpio.htm"); ?>
 <!-- unused file: H5P/H5Pget_dxpl_multi.htm -->
 <?php include("H5P/H5Pget_edc_check.htm"); ?>
+<?php include("H5P/H5Pget_efile_prefix.htm"); ?>
 <?php include("H5P/H5Pget_elink_acc_flags.htm"); ?>
 <?php include("H5P/H5Pget_elink_cb.htm"); ?>
 <?php include("H5P/H5Pget_elink_fapl.htm"); ?>
@@ -3611,6 +3678,13 @@ See further notes in the description of each function.
 <?php include("H5P/H5Pget_small_data_block_size.htm"); ?>
 <?php include("H5P/H5Pget_sym_k.htm"); ?>
 <?php include("H5P/H5Pget_type_conv_cb.htm"); ?>
+<?php include("H5P/H5Pget_virtual_count.htm"); ?>
+<?php include("H5P/H5Pget_virtual_dsetname.htm"); ?>
+<?php include("H5P/H5Pget_virtual_filename.htm"); ?>
+<?php include("H5P/H5Pget_virtual_printf_gap.htm"); ?>
+<?php include("H5P/H5Pget_virtual_srcspace.htm"); ?>
+<?php include("H5P/H5Pget_virtual_view.htm"); ?>
+<?php include("H5P/H5Pget_virtual_vspace.htm"); ?>
 <?php include("H5P/H5Pget_userblock.htm"); ?>
 <?php include("H5P/H5Pget_version.htm"); ?>
 <?php include("H5P/H5Pget_vlen_mem_manager.htm"); ?>
@@ -3651,6 +3725,7 @@ See further notes in the description of each function.
 <?php include("H5P/H5Pset_dxpl_mpio_collective_opt.htm"); ?>
 <!-- unused file: H5P/H5Pset_dxpl_multi.htm -->
 <?php include("H5P/H5Pset_edc_check.htm"); ?>
+<?php include("H5P/H5Pset_efile_prefix.htm"); ?>
 <?php include("H5P/H5Pset_elink_acc_flags.htm"); ?>
 <?php include("H5P/H5Pset_elink_cb.htm"); ?>
 <?php include("H5P/H5Pset_elink_fapl.htm"); ?>
@@ -3708,6 +3783,9 @@ See further notes in the description of each function.
 <?php include("H5P/H5Pset_szip.htm"); ?>
 <?php include("H5P/H5Pset_type_conv_cb.htm"); ?>
 <?php include("H5P/H5Pset_userblock.htm"); ?>
+<?php include("H5P/H5Pset_virtual.htm"); ?>
+<?php include("H5P/H5Pset_virtual_printf_gap.htm"); ?>
+<?php include("H5P/H5Pset_virtual_view.htm"); ?>
 <?php include("H5P/H5Pset_vlen_mem_manager.htm"); ?>
 <?php include("H5P/H5Punregister.htm"); ?>
 
@@ -3775,7 +3853,7 @@ In the
 
 <SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 7 April 2016");
+document.writeln("Last modified: 27 April 2016");
 -->
 </SCRIPT>
  
diff --git a/html/RM/RM_H5S.html b/html/RM/RM_H5S.html
index 2f97962..78144f3 100644
--- a/html/RM/RM_H5S.html
+++ b/html/RM/RM_H5S.html
@@ -104,11 +104,12 @@ elements of a dataset.
     <li><a href="#Dataspace-Encode">H5Sencode</a>
     <li><a href="#Dataspace-CreateSimple">H5Screate_simple</a>
     <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
+    <li><a href="#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a>
+    <li><a href="#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a>
     <li><a href="#Dataspace-OffsetSimple">H5Soffset_simple</a>
+</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-ExtentDims">H5Sget_simple_extent_dims</a>
     <li><a href="#Dataspace-ExtentNdims">H5Sget_simple_extent_ndims</a>
-
-</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-ExtentNpoints">H5Sget_simple_extent_npoints</a>
     <li><a href="#Dataspace-ExtentType">H5Sget_simple_extent_type</a>
     <li><a href="#Dataspace-ExtentCopy">H5Sextent_copy</a>
@@ -117,9 +118,9 @@ elements of a dataset.
     <li><a href="#Dataspace-SetExtentNone">H5Sset_extent_none</a>
     <li><a href="#Dataspace-GetSelectType">H5Sget_select_type</a>
     <li><a href="#Dataspace-SelectNpoints">H5Sget_select_npoints</a>
+</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-SelectHyperNBlocks">H5Sget_select_hyper_nblocks</a>
     <li><a href="#Dataspace-SelectHyperBlockList">H5Sget_select_hyper_blocklist</a>
-</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
     <li><a href="#Dataspace-SelectElemPointList">H5Sget_select_elem_pointlist</a>
     <li><a href="#Dataspace-SelectBounds">H5Sget_select_bounds</a>
@@ -148,14 +149,15 @@ elements of a dataset.
       <li><a href="#Dataspace-Encode">H5Sencode</a>
       <li><a href="#Dataspace-ExtentCopy">H5Sextent_copy</a>
       <li><a href="#Dataspace-ExtentEqual">H5Sextent_equal</a>
+      <li><a href="#Dataspace-GetRegularHyperslab">H5Sget_regular_hyperslab</a>
       <li><a href="#Dataspace-SelectBounds">H5Sget_select_bounds</a>
-      <li><a href="#Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
      
     </td>
     
     <td>      </td>
     
     <td valign="top">
+      <li><a href="#Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
       <li><a href="#Dataspace-SelectElemPointList">H5Sget_select_elem_pointlist</a>
       <li><a href="#Dataspace-SelectHyperBlockList">H5Sget_select_hyper_blocklist</a>    
       <li><a href="#Dataspace-SelectHyperNBlocks">H5Sget_select_hyper_nblocks</a>
@@ -165,12 +167,13 @@ elements of a dataset.
       <li><a href="#Dataspace-ExtentNdims">H5Sget_simple_extent_ndims</a>
       <li><a href="#Dataspace-ExtentNpoints">H5Sget_simple_extent_npoints</a>
       <li><a href="#Dataspace-ExtentType">H5Sget_simple_extent_type</a>
-      <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
     </td>
     
     <td>      </td>
     
     <td valign="top">
+      <li><a href="#Dataspace-IsRegularHyperslab">H5Sis_regular_hyperslab</a>
+      <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
       <li><a href="#Dataspace-OffsetSimple">H5Soffset_simple</a>      
       <li><a href="#Dataspace-SelectAll">H5Sselect_all</a>
       <li><a href="#Dataspace-SelectElements">H5Sselect_elements</a>
@@ -198,9 +201,11 @@ as the corresponding C function.
     <li><a href="#Dataspace-CreateSimple">h5screate_simple_f</a>
     <li><a href="#Dataspace-IsSimple">h5sis_simple_f</a>
     <li><a href="#Dataspace-OffsetSimple">h5soffset_simple_f</a>
+    <li><a href="#Dataspace-IsRegularHyperslab">h5sis_regular_hyperslab_f</a>
+    <li><a href="#Dataspace-GetRegularHyperslab">h5sget_regular_hyperslab_f</a>
     <li><a href="#Dataspace-ExtentDims">h5sget_simple_extent_dims_f</a>
-    <li><a href="#Dataspace-ExtentNdims">h5sget_simple_extent_ndims_f</a>
 </td><td>      </td><td valign=top>
+    <li><a href="#Dataspace-ExtentNdims">h5sget_simple_extent_ndims_f</a>
     <li><a href="#Dataspace-ExtentNpoints">h5sget_simple_extent_npoints_f</a>
     <li><a href="#Dataspace-ExtentType">h5sget_simple_extent_type_f</a>
     <li><a href="#Dataspace-ExtentCopy">h5sextent_copy_f</a>
@@ -208,10 +213,10 @@ as the corresponding C function.
     <li><a href="#Dataspace-SetExtentNone">h5sset_extent_none_f</a>
     <li><a href="#Dataspace-GetSelectType">h5sget_select_type_f</a>
     <li><a href="#Dataspace-SelectNpoints">h5sget_select_npoints_f</a>
+</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-SelectHyperNBlocks">h5sget_select_hyper_nblocks_f</a>
     <li><a href="#Dataspace-SelectHyperBlockList">h5sget_select_hyper_blocklist_f</a>
 <!--<li><a href="#Dataspace-SelectBounds">h5sget_select_bounds_f</a>      -->
-</td><td>      </td><td valign=top>
     <li><a href="#Dataspace-SelectElemNPoints">h5sget_select_elem_npoints_f</a>
     <li><a href="#Dataspace-SelectElemPointList">h5sget_select_elem_pointlist_f</a>
     <li><a href="#Dataspace-SelectElements">h5sselect_elements_f</a>
@@ -275,6 +280,7 @@ of the <cite>HDF5 User's Guide.</cite>.
 <?php include("H5S/H5Sencode.htm"); ?>
 <?php include("H5S/H5Sextent_copy.htm"); ?>
 <?php include("H5S/H5Sextent_equal.htm"); ?>
+<?php include("H5S/H5Sget_regular_hyperslab.htm"); ?>
 <?php include("H5S/H5Sget_select_bounds.htm"); ?>
 <?php include("H5S/H5Sget_select_elem_npoints.htm"); ?>
 <?php include("H5S/H5Sget_select_elem_pointlist.htm"); ?>
@@ -286,6 +292,7 @@ of the <cite>HDF5 User's Guide.</cite>.
 <?php include("H5S/H5Sget_simple_extent_ndims.htm"); ?>
 <?php include("H5S/H5Sget_simple_extent_npoints.htm"); ?>
 <?php include("H5S/H5Sget_simple_extent_type.htm"); ?>
+<?php include("H5S/H5Sis_regular_hyperslab.htm"); ?>
 <?php include("H5S/H5Sis_simple.htm"); ?>
 <?php include("H5S/H5Soffset_simple.htm"); ?>
 <?php include("H5S/H5Sselect_all.htm"); ?>
@@ -360,7 +367,7 @@ In the
 
 <SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 14 October 2014");
+document.writeln("Last modified: 27 April 2016");
 -->
 </SCRIPT> 
 
diff --git a/html/RM/Tools.html b/html/RM/Tools.html
index be2045f..0a09cf0 100644
--- a/html/RM/Tools.html
+++ b/html/RM/Tools.html
@@ -3,7 +3,9 @@
 HDF5/Tools API Specification
 </title>
 
-</html><!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
+<body bgcolor="#FFFFFF">
+
+<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
 <!--
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
   * Copyright by The HDF Group.                                               *
@@ -20,9 +22,8 @@ HDF5/Tools API Specification
   * access to either file, you may request a copy from help at hdfgroup.org.     *
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  -->
-<!-- #EndLibraryItem --><html></head>
+<!-- #EndLibraryItem --></head>
 
-<body bgcolor="#FFFFFF">
 
 
 <!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" -->
@@ -137,6 +138,9 @@ installed with HDF5.
             Measures Parallel HDF5 performance.
         <li><a href="#Tools-PerfSerial">h5perf_serial</a> -- 
             Measures HDF5 serial performance.
+        <li><a href="#Tools-Clear">h5clear</a> -- 
+            Clears the file consistency flags field in the superblock 
+            of a file.
     <br><br>
     </ul>
 
@@ -172,6 +176,12 @@ installed with HDF5.
             Simplify the compilation of HDF5 programs written in Fortran90.
         <li><a href="#Tools-H5C++">h5c++</a> --
             Simplifies the compilation of HDF5 programs written in C++.
+<!-- 10.23.2015
+        <li><a href="#Tools-NewTool1">h5newtool1</a> --
+            Simplifies the compilation of HDF5 programs written in C++.
+        <li><a href="#Tools-NewTool2">h5newtool2</a> --
+            Simplifies the compilation of HDF5 programs written in C++.
+-->
     <br><br>
     </ul>
  
@@ -259,11 +269,15 @@ installed with HDF5.
 <?php include("Tools/h5check.htm"); ?>
 <?php include("Tools/h5perf.htm"); ?>
 <?php include("Tools/h5perf_serial.htm"); ?>
+<?php include("Tools/h5clear.htm"); ?>
 <?php include("Tools/h5redeploy.htm"); ?>
 <?php include("Tools/h5cc_and_h5pcc.htm"); ?>
 <?php include("Tools/h5fc_and_h5pfc.htm"); ?>
 <?php include("Tools/h5c++.htm"); ?>
-
+<!-- 10.23.2015
+<?php include("Tools/h5newtool1.htm"); ?>
+<?php include("Tools/h5newtool2.htm"); ?>
+-->
 
 <!-- HEADER RIGHT " " -->
 
@@ -330,7 +344,7 @@ In the
 
 <SCRIPT LANGUAGE="JAVASCRIPT">
 <!--
-document.writeln("Last modified: 13 May 2015");
+document.writeln("Last modified: 5 May 2016");
 -->
 </SCRIPT>
 
diff --git a/html/RM/Tools/h5clear.htm b/html/RM/Tools/h5clear.htm
index 8c899f2..b9d3e52 100644
--- a/html/RM/Tools/h5clear.htm
+++ b/html/RM/Tools/h5clear.htm
@@ -27,10 +27,10 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 1 April 2016
+    Last modified: 5 May 2016
     </i></font></div></dt>
 
-<dt><strong>Tool Name:</strong> <a name="Tools-Stat">h5clear</a></dt>
+<dt><strong>Tool Name:</strong> <a name="Tools-Clear">h5clear</a></dt>
 
 <dt><strong>Syntax:</strong></dt>
 <!--
diff --git a/html/RM/Tools/h5format_convert.htm b/html/RM/Tools/h5format_convert.htm
index b97521d..3879a94 100644
--- a/html/RM/Tools/h5format_convert.htm
+++ b/html/RM/Tools/h5format_convert.htm
@@ -26,7 +26,7 @@
 <dl>
 
 <dt><div align="right"><font color="999999" size="-1"><i>
-    Last modified: 28 January 2016
+    Last modified: 4 May 2016
     </i></font></div></dt>
 
   <dt><strong>Tool Name:</strong> 
@@ -38,38 +38,45 @@
     <br />
 
   <dt><strong>Purpose:</strong></dt>
-    <dd>Converts the indexing of chunked datasets from 1.10.x types to 
-    the 1.8.x version 1 B-tree indexing type.</dd>
+    <dd>Converts the layout format version and chunked indexing types 
+    of datasets created with a 1.10.x version of the library so that 
+    applications built with a 1.8.x version of the library can access 
+    these datasets.</dd>
     <br />
 
-  <dt><strong>Motivation:</strong></dt>
-    <dd>The indexing possibilities of chunked datasets was expanded 
-    in 1.10.x versions of the HDF5 Library. This tool 
-    can be used to convert chunked datasets made with 1.10.x versions 
-    of the library to the 1.8.x chunked dataset index format. </dd>
+  <dt><strong>Motivation: </strong></dt>
+    <dd>
+    When datasets are created in a 1.10.x HDF5 file accessed with the 
+    latest format, the library will use the latest layout format version 
+    for the datasets. This will allow users to take advantage of new 
+    features such as virtual storage and the latest index types for 
+    chunked datasets. However, applications built with 1.8.x versions 
+    of the library will not be able to access these datasets.</dd>
     <br />
 
   <dt><strong>Description:</strong></dt>
     <dd>When run, the tool will investigate datasets in 
-    the file <code><em>file_name</em></code>. The tool will convert 
-    chunked datasets whose indexing type is not version 1 B-tree 
-    to version 1 B-tree. The tool will not change any dataset that is 
-    not chunked or its indexing type is already version 1 B-tree. If 
-    errors are encountered, no further conversion will be performed, 
+    the file <code><em>file_name</em></code>. It will convert 
+    datasets as follows:
+    <p>
+    <ol type="a">
+    <li>A chunked dataset: convert the chunk indexing type to version 
+    1 B-tree if the type is not already a version 1 B-tree</li>
+    <li>A compact or contiguous dataset: downgrade the layout version 
+    to 3 if the layout version is not already version 3</li>
+    <li>A virtual dataset: no action</li>
+    </ol>
+    <p>
+    If errors are encountered, no further conversion will be performed, 
     and the tool will exit with failure. 
     </dd>
     <br />
 
-
-
-  <dt><strong>Options and Parameters:
-  </strong>
-  </dt>
+  <dt><strong>Options and Parameters: </strong></dt>
 
     <dd><strong>Options:</strong></dd>
-    <dd>
-    <br />
 
+    <dd>
     <table width="100%" cellpadding="5">
     <tr valign="top">
     <td><strong>Short and Long Forms</strong>
@@ -102,10 +109,9 @@
         <code>                         </code></td>
     <td>This is the name including its path of the 
         dataset to be converted (the links from the root group to the 
-        dataset). When the dataset is not chunked or the indexing 
-        type is already version 1 B-tree, the tool will not perform any 
-        conversion and will exit with success. Only one dataset can be 
-        specified with this option each time the tool is run. 
+        dataset). If no conversion is needed,
+        the tool will exit with success.
+        Only one dataset can be specified with this option each time the tool is run. 
         If this option is not used, the tool will attempt to convert 
         every dataset in <code><em>file_name</em></code>.
     </td></tr>
diff --git a/html/ed_libs/Footer-THGonly.htm b/html/ed_libs/Footer-THGonly.htm
index b2e60d4..b0fb983 100644
--- a/html/ed_libs/Footer-THGonly.htm
+++ b/html/ed_libs/Footer-THGonly.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="./Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer-THGonly2.htm b/html/ed_libs/Footer-THGonly2.htm
index 38e2aca..5029e70 100644
--- a/html/ed_libs/Footer-THGonly2.htm
+++ b/html/ed_libs/Footer-THGonly2.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer-THGonly3.htm b/html/ed_libs/Footer-THGonly3.htm
index a90375d..ca7d3de 100644
--- a/html/ed_libs/Footer-THGonly3.htm
+++ b/html/ed_libs/Footer-THGonly3.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer.htm b/html/ed_libs/Footer.htm
index 30fd66a..cfcfe15 100644
--- a/html/ed_libs/Footer.htm
+++ b/html/ed_libs/Footer.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="./Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer2.htm b/html/ed_libs/Footer2.htm
index b163b00..4a6db55 100644
--- a/html/ed_libs/Footer2.htm
+++ b/html/ed_libs/Footer2.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/ed_libs/Footer3.htm b/html/ed_libs/Footer3.htm
index d260ce2..2fc00c7 100644
--- a/html/ed_libs/Footer3.htm
+++ b/html/ed_libs/Footer3.htm
@@ -8,7 +8,7 @@
           <address>
           The HDF Group Help Desk: <img src="../../Graphics/help.png" align=top height=16>
           <br>
-          Describes HDF5 Release 1.10.0
+          Describes HDF5 Release 1.10.1
           </address>
       </td><td width="5%"> </td>
       <td align="right">
diff --git a/html/index.html b/html/index.html
index 534ffd4..293871e 100644
--- a/html/index.html
+++ b/html/index.html
@@ -262,7 +262,7 @@
 <td bgcolor="#FFFFFF" valign="top" align="center" colspan="3">
     <br />
     <font size="5" color="#004488">HDF5 Library</font>
-    <br /><font size="4" color="#004488">Release 1.10.0, March 2016</font>
+    <br /><font size="4" color="#004488">Release 1.10.1, Summer 2016</font>
 </td>
 </tr>
 
@@ -278,7 +278,7 @@
             <tr><td align=left valign=top bgcolor=#ffffff>
             <center>
             <font color=#004488><strong>What’s New in
-            HDF5 Release 1.10.0?</strong></font>
+            the HDF5 Release 1.10 Series?</strong></font>
 <!--
             <font size=-1>
             <br>Critical information for updating applications 
@@ -482,7 +482,7 @@
 -->
         <br />
         <!-- hhmts start -->
-        Last modified: 30 March 2016
+        Last modified: 20 May 2016
         <!-- hhmts end -->
 
         <p>
diff --git a/java/examples/datasets/CMakeLists.txt b/java/examples/datasets/CMakeLists.txt
index 077c6bb..5f5f37c 100644
--- a/java/examples/datasets/CMakeLists.txt
+++ b/java/examples/datasets/CMakeLists.txt
@@ -62,12 +62,15 @@ foreach (HDFJAVA_JAR ${CMAKE_JAVA_INCLUDE_PATH})
 endforeach (HDFJAVA_JAR)
 
 MACRO (ADD_H5_TEST resultfile resultcode)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=hdf5_java_debug;")
+  endif(CMAKE_BUILD_TYPE MATCHES Debug)
   add_test (
       NAME JAVA_datasets-${resultfile}
       COMMAND "${CMAKE_COMMAND}"
           -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
           -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${resultfile}_JAR_FILE}"
-          -D "TEST_ARGS:STRING=${ARGN}"
+          -D "TEST_ARGS:STRING=${CMD_ARGS}${ARGN}"
           -D "TEST_PROGRAM=examples.datasets.${resultfile}"
           -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}"
           -D "TEST_FOLDER=${HDFJAVA_EXAMPLES_BINARY_DIR}"
@@ -96,7 +99,7 @@ if (BUILD_TESTING)
   foreach (example ${HDF_JAVA_EXAMPLES})
     if (${example} STREQUAL "H5Ex_D_External")
       add_test (
-          NAME JAVA_datasets-${example}-clearall-objects
+          NAME JAVA_datasets-${example}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
               ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5
@@ -106,7 +109,7 @@ if (BUILD_TESTING)
       )
     else (${example} STREQUAL "H5Ex_D_External")
       add_test (
-          NAME JAVA_datasets-${example}-clearall-objects
+          NAME JAVA_datasets-${example}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
               -E remove
               ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5
@@ -115,7 +118,7 @@ if (BUILD_TESTING)
       )
     endif (${example} STREQUAL "H5Ex_D_External")
     if (NOT "${last_test}" STREQUAL "")
-      set_tests_properties (JAVA_datasets-${example}-clearall-objects PROPERTIES DEPENDS ${last_test})
+      set_tests_properties (JAVA_datasets-${example}-clear-objects PROPERTIES DEPENDS ${last_test})
     endif (NOT "${last_test}" STREQUAL "")
     add_test (
         NAME JAVA_datasets-${example}-copy-objects
@@ -124,7 +127,7 @@ if (BUILD_TESTING)
             ${HDFJAVA_EXAMPLES_SOURCE_DIR}/testfiles/examples.datasets.${example}.txt
             ${HDFJAVA_EXAMPLES_DATASETS_BINARY_DIR}/${example}.txt
     )
-    set_tests_properties (JAVA_datasets-${example}-copy-objects PROPERTIES DEPENDS JAVA_datasets-${example}-clearall-objects)
+    set_tests_properties (JAVA_datasets-${example}-copy-objects PROPERTIES DEPENDS JAVA_datasets-${example}-clear-objects)
     set (last_test "JAVA_datasets-${example}-copy-objects")
     if (${example} STREQUAL "H5Ex_D_Szip")
       if (USE_FILTER_SZIP)
diff --git a/java/examples/datatypes/CMakeLists.txt b/java/examples/datatypes/CMakeLists.txt
index 6525506..1e305be 100644
--- a/java/examples/datatypes/CMakeLists.txt
+++ b/java/examples/datatypes/CMakeLists.txt
@@ -62,12 +62,15 @@ foreach (HDFJAVA_JAR ${CMAKE_JAVA_INCLUDE_PATH})
 endforeach (HDFJAVA_JAR)
 
 MACRO (ADD_H5_TEST resultfile resultcode)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=hdf5_java_debug;")
+  endif(CMAKE_BUILD_TYPE MATCHES Debug)
   add_test (
       NAME JAVA_datatypes-${resultfile}
       COMMAND "${CMAKE_COMMAND}"
           -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
           -D "TEST_PROGRAM=examples.datatypes.${resultfile}"
-          -D "TEST_ARGS:STRING=${ARGN}"
+          -D "TEST_ARGS:STRING=${CMD_ARGS}${ARGN}"
           -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${resultfile}_JAR_FILE}"
           -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}"
           -D "TEST_FOLDER=${HDFJAVA_EXAMPLES_BINARY_DIR}"
@@ -85,7 +88,7 @@ ENDMACRO (ADD_H5_TEST file)
 if (BUILD_TESTING)
   foreach (example ${HDF_JAVA_EXAMPLES})
     add_test (
-        NAME JAVA_datatypes-${example}-clearall-objects
+        NAME JAVA_datatypes-${example}-clear-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5
@@ -93,7 +96,7 @@ if (BUILD_TESTING)
             ${example}.out.err
     )
     if (NOT "${last_test}" STREQUAL "")
-      set_tests_properties (JAVA_datatypes-${example}-clearall-objects PROPERTIES DEPENDS ${last_test})
+      set_tests_properties (JAVA_datatypes-${example}-clear-objects PROPERTIES DEPENDS ${last_test})
     endif (NOT "${last_test}" STREQUAL "")
     add_test (
         NAME JAVA_datatypes-${example}-copy-objects
@@ -102,7 +105,7 @@ if (BUILD_TESTING)
             ${HDFJAVA_EXAMPLES_SOURCE_DIR}/testfiles/examples.datatypes.${example}.txt
             ${HDFJAVA_EXAMPLES_DATATYPES_BINARY_DIR}/${example}.txt
     )
-    set_tests_properties (JAVA_datatypes-${example}-copy-objects PROPERTIES DEPENDS JAVA_datatypes-${example}-clearall-objects)
+    set_tests_properties (JAVA_datatypes-${example}-copy-objects PROPERTIES DEPENDS JAVA_datatypes-${example}-clear-objects)
     set (last_test "JAVA_datatypes-${example}-copy-objects")
     ADD_H5_TEST (${example} 0)
   endforeach (example ${HDF_JAVA_EXAMPLES})
diff --git a/java/examples/groups/CMakeLists.txt b/java/examples/groups/CMakeLists.txt
index 0849f0c..1d61614 100644
--- a/java/examples/groups/CMakeLists.txt
+++ b/java/examples/groups/CMakeLists.txt
@@ -67,12 +67,15 @@ foreach (h5_file ${HDF_JAVA_TEST_FILES})
 endforeach (h5_file ${HDF_JAVA_TEST_FILES})
 
 MACRO (ADD_H5_TEST resultfile resultcode)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=hdf5_java_debug;")
+  endif(CMAKE_BUILD_TYPE MATCHES Debug)
   add_test (
       NAME JAVA_groups-${resultfile}
       COMMAND "${CMAKE_COMMAND}"
           -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
           -D "TEST_PROGRAM=examples.groups.${resultfile}"
-          -D "TEST_ARGS:STRING=${ARGN}"
+          -D "TEST_ARGS:STRING=${CMD_ARGS}${ARGN}"
           -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${resultfile}_JAR_FILE}"
           -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}"
           -D "TEST_FOLDER=${HDFJAVA_EXAMPLES_BINARY_DIR}"
@@ -90,20 +93,20 @@ ENDMACRO (ADD_H5_TEST file)
 if (BUILD_TESTING)
   foreach (example ${HDF_JAVA_EXAMPLES})
     add_test (
-        NAME JAVA_groups-${example}-clearall-objects
+        NAME JAVA_groups-${example}-clear-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             ${example}.out
             ${example}.out.err
     )
     if (NOT "${last_test}" STREQUAL "")
-      set_tests_properties (JAVA_groups-${example}-clearall-objects PROPERTIES DEPENDS ${last_test})
+      set_tests_properties (JAVA_groups-${example}-clear-objects PROPERTIES DEPENDS ${last_test})
     endif (NOT "${last_test}" STREQUAL "")
-    set (last_test "JAVA_groups-${example}-clearall-objects")
+    set (last_test "JAVA_groups-${example}-clear-objects")
     if (NOT ${example} STREQUAL "H5Ex_G_Iterate" AND NOT ${example} STREQUAL "H5Ex_G_Visit")
       if (${example} STREQUAL "H5Ex_G_Compact")
         add_test (
-            NAME JAVA_groups-${example}-clearall-h5s
+            NAME JAVA_groups-${example}-clear-h5s
             COMMAND    ${CMAKE_COMMAND}
                 -E remove
                 ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}1.h5
@@ -111,16 +114,16 @@ if (BUILD_TESTING)
         )
       else (${example} STREQUAL "H5Ex_G_Compact")
         add_test (
-            NAME JAVA_groups-${example}-clearall-h5s
+            NAME JAVA_groups-${example}-clear-h5s
             COMMAND    ${CMAKE_COMMAND}
                 -E remove
                 ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5
         )
       endif (${example} STREQUAL "H5Ex_G_Compact")
       if (NOT "${last_test}" STREQUAL "")
-        set_tests_properties (JAVA_groups-${example}-clearall-h5s PROPERTIES DEPENDS ${last_test})
+        set_tests_properties (JAVA_groups-${example}-clear-h5s PROPERTIES DEPENDS ${last_test})
       endif (NOT "${last_test}" STREQUAL "")
-      set (last_test "JAVA_groups-${example}-clearall-h5s")
+      set (last_test "JAVA_groups-${example}-clear-h5s")
     endif (NOT ${example} STREQUAL "H5Ex_G_Iterate" AND NOT ${example} STREQUAL "H5Ex_G_Visit")
     add_test (
         NAME JAVA_groups-${example}-copy-objects
diff --git a/java/examples/intro/CMakeLists.txt b/java/examples/intro/CMakeLists.txt
index ae3f585..8679943 100644
--- a/java/examples/intro/CMakeLists.txt
+++ b/java/examples/intro/CMakeLists.txt
@@ -63,12 +63,15 @@ foreach (example ${HDF_JAVA_OBJECT_EXAMPLES})
 endforeach (example ${HDF_JAVA_OBJECT_EXAMPLES})
 
 MACRO (ADD_H5_TEST resultfile resultcode)
+  if (CMAKE_BUILD_TYPE MATCHES Debug)
+    set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=hdf5_java_debug;")
+  endif(CMAKE_BUILD_TYPE MATCHES Debug)
   add_test (
       NAME JAVA_intro-${resultfile}
       COMMAND "${CMAKE_COMMAND}"
           -D "TEST_TESTER=${CMAKE_Java_RUNTIME};${CMAKE_Java_RUNTIME_FLAGS}"
           -D "TEST_PROGRAM=examples.intro.${resultfile}"
-          -D "TEST_ARGS:STRING=${ARGN}"
+          -D "TEST_ARGS:STRING=${CMD_ARGS}${ARGN}"
           -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${${resultfile}_JAR_FILE}"
           -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}"
           -D "TEST_FOLDER=${HDFJAVA_EXAMPLES_BINARY_DIR}"
@@ -87,7 +90,7 @@ if (BUILD_TESTING)
 
   foreach (example ${HDF_JAVA_EXAMPLES})
     add_test (
-        NAME JAVA_intro-${example}-clearall-objects
+        NAME JAVA_intro-${example}-clear-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             ${HDFJAVA_EXAMPLES_BINARY_DIR}/${example}.h5
@@ -95,7 +98,7 @@ if (BUILD_TESTING)
             ${example}.out.err
     )
     if (NOT "${last_test}" STREQUAL "")
-      set_tests_properties (JAVA_intro-${example}-clearall-objects PROPERTIES DEPENDS ${last_test})
+      set_tests_properties (JAVA_intro-${example}-clear-objects PROPERTIES DEPENDS ${last_test})
     endif (NOT "${last_test}" STREQUAL "")
     add_test (
         NAME JAVA_intro-${example}-copy-objects
@@ -104,7 +107,7 @@ if (BUILD_TESTING)
             ${HDFJAVA_EXAMPLES_SOURCE_DIR}/testfiles/examples.intro.${example}.txt
             ${HDFJAVA_EXAMPLES_INTRO_BINARY_DIR}/${example}.txt
     )
-    set_tests_properties (JAVA_intro-${example}-copy-objects PROPERTIES DEPENDS JAVA_intro-${example}-clearall-objects)
+    set_tests_properties (JAVA_intro-${example}-copy-objects PROPERTIES DEPENDS JAVA_intro-${example}-clear-objects)
     set (last_test "JAVA_intro-${example}-copy-objects")
     ADD_H5_TEST (${example} 0)
   endforeach (example ${HDF_JAVA_EXAMPLES})
diff --git a/java/src/hdf/hdf5lib/CMakeLists.txt b/java/src/hdf/hdf5lib/CMakeLists.txt
index 3f70bce..a4a156a 100644
--- a/java/src/hdf/hdf5lib/CMakeLists.txt
+++ b/java/src/hdf/hdf5lib/CMakeLists.txt
@@ -11,7 +11,7 @@ INCLUDE_DIRECTORIES (
 )
 
 SET_GLOBAL_VARIABLE (HDF5_JAVA_SOURCE_PACKAGES
-    "${HDFJAVA_SOURCE_PACKAGES};hdf.hdf5lib.callbacks;hdf.hdf5lib.exceptions;hdf.hdf5lib.structs;hdf.hdf5lib"
+    "${HDF5_JAVA_SOURCE_PACKAGES};hdf.hdf5lib.callbacks;hdf.hdf5lib.exceptions;hdf.hdf5lib.structs;hdf.hdf5lib"
 )
 
 set (HDF5_JAVA_HDF_HDF5_CALLBACKS_SRCS
diff --git a/java/src/jni/Makefile.in b/java/src/jni/Makefile.in
index 39879e0..97febf1 100644
--- a/java/src/jni/Makefile.in
+++ b/java/src/jni/Makefile.in
@@ -736,13 +736,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -757,7 +757,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # Mark this directory as part of the JNI API
diff --git a/java/test/junit.sh.in b/java/test/junit.sh.in
index 74e8ba9..f37703a 100644
--- a/java/test/junit.sh.in
+++ b/java/test/junit.sh.in
@@ -234,13 +234,18 @@ sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
     -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
     $actual_ext > $actual
 
-if $CMP $expect $actual; then
-    echo " PASSED"
+# SunOS does not support this. Skip it.
+if [ $myos = SunOS ]; then
+    echo " SKIPPED"
 else
-    echo "*FAILED*"
-    echo "    Expected result differs from actual result"
-    nerrors="`expr $nerrors + 1`"
-    test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    if $CMP $expect $actual; then
+        echo " PASSED"
+    else
+        echo "*FAILED*"
+        echo "    Expected result differs from actual result"
+        nerrors="`expr $nerrors + 1`"
+        test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/    /'
+    fi
 fi
 
 
diff --git a/m4/aclocal_fc.m4 b/m4/aclocal_fc.m4
index 6d32f10..0672e87 100644
--- a/m4/aclocal_fc.m4
+++ b/m4/aclocal_fc.m4
@@ -325,54 +325,63 @@ rm -f pac_fconftest.out
 AC_RUN_IFELSE([
     AC_LANG_SOURCE([
     PROGRAM main
-        IMPLICIT NONE
-        INTEGER :: ik, k, lastkind, max_decimal_prec
-	INTEGER :: num_rkinds, num_ikinds
-        num_ikinds = 0
-        lastkind=SELECTED_INT_KIND(1)
-        OPEN(8, FILE='pac_fconftest.out', form='formatted')
-        ! Find integer KINDs
-        DO ik=2,36
-             k = SELECTED_INT_KIND(ik)
-             IF (k .NE. lastkind) THEN
-	          num_ikinds = num_ikinds + 1	
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','	
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-	IF (lastkind.NE.-1) THEN
-	   num_ikinds = num_ikinds + 1	
-           WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-        ! Find real KINDs
-        num_rkinds = 0
-        lastkind=SELECTED_REAL_KIND(1)
-	max_decimal_prec = 1
-        DO ik=2,36
-             k = SELECTED_REAL_KIND(ik)
-             IF (k .NE. lastkind) THEN
-                  num_rkinds = num_rkinds + 1
-                  WRITE(8,'(I0)',ADVANCE='NO') lastkind
-                  lastkind = k
-             	  IF(k.GT.0) WRITE(8,'(A)',ADVANCE='NO') ','
-	          max_decimal_prec = ik
-             ENDIF
-             IF (k .LE. 0) EXIT
-        ENDDO
-        IF (lastkind.NE.-1)THEN
-	    num_rkinds = num_rkinds + 1
-            WRITE(8,'(I0)') lastkind
-	ELSE
-           WRITE(8,'()')
-        ENDIF
-	WRITE(8,'(I0)') max_decimal_prec
-	WRITE(8,'(I0)') num_ikinds
-	WRITE(8,'(I0)') num_rkinds
-    END
+      IMPLICIT NONE
+      INTEGER :: ik, jk, k, max_decimal_prec
+      INTEGER :: num_rkinds = 1, num_ikinds = 1
+      INTEGER, DIMENSION(1:10) :: list_ikinds = -1
+      INTEGER, DIMENSION(1:10) :: list_rkinds = -1
+  
+      OPEN(8, FILE='pac_fconftest.out', FORM='formatted')
+
+      ! Find integer KINDs
+      list_ikinds(num_ikinds)=SELECTED_INT_KIND(1)
+      DO ik = 2, 36
+         k = SELECTED_INT_KIND(ik)
+         IF(k.LT.0) EXIT
+         IF(k.GT.list_ikinds(num_ikinds))THEN
+            num_ikinds = num_ikinds + 1
+            list_ikinds(num_ikinds) = k
+         ENDIF
+      ENDDO
+
+      DO k = 1, num_ikinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_ikinds(k)
+         IF(k.NE.num_ikinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+      ! Find real KINDs
+      list_rkinds(num_rkinds)=SELECTED_REAL_KIND(1)
+      max_decimal_prec = 1
+
+      prec: DO ik = 2, 36
+         exp: DO jk = 1, 17000
+            k = SELECTED_REAL_KIND(ik,jk)
+            IF(k.LT.0) EXIT exp
+            IF(k.GT.list_rkinds(num_rkinds))THEN
+               num_rkinds = num_rkinds + 1
+               list_rkinds(num_rkinds) = k
+            ENDIF
+            max_decimal_prec = ik
+         ENDDO exp
+      ENDDO prec
+
+      DO k = 1, num_rkinds
+         WRITE(8,'(I0)', ADVANCE='NO') list_rkinds(k)
+         IF(k.NE.num_rkinds)THEN
+            WRITE(8,'(A)',ADVANCE='NO') ','
+         ELSE
+            WRITE(8,'()')
+         ENDIF
+      ENDDO
+
+     WRITE(8,'(I0)') max_decimal_prec
+     WRITE(8,'(I0)') num_ikinds
+     WRITE(8,'(I0)') num_rkinds
+    END PROGRAM main
     ])
 ],[
     if test -s pac_fconftest.out ; then
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 7fd41a6..662eb58 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.10.0 released on 2016-03-30
+HDF5 version 1.10.0-patch1 released on 2016-05-18
 ================================================================================
 
 
@@ -301,6 +301,75 @@ This release supports the following features:
 
 
 
+Issues Addressed in this Release Since 1.10.0
+=============================================
+
+     - h5diff would return from a compare attributes abnormally if one of the datatypes
+       was a vlen. This resulted in a memory leak as well as an incorrect report of
+       attribute comparison.
+
+       Fixed.
+       (ADB - 2016/04/26, HDFFV-9784)
+
+     - The JUnit-interface test may fail on Solaris platforms. The result of
+       a test for verifying the content of the error stack to stdout is
+       in a different order on Solaris then other platforms.
+
+       This test is skipped on Solaris
+       (ADB - 2016/04/21, HDFFV-9734)
+
+     - When building HDF5 with Java using CMake and specifying Debug for CMAKE_BUILD_TYPE,
+       there was a missing command argument for the tests of the examples.
+
+       Fixed.
+       (ADB - 2016/04/21, HDFFV-9743)
+
+     - Changed h5diff to print a warning when a dataset is virtual, enabling
+       the data to be compared. In addition h5repack failed to copy the data
+       of a virtual dataset to the new file. Function H5D__get_space_status changed
+       to correctly determine the H5D_space_status_t allocation value.
+
+       CMake added the Fixed Array indexing tests that were only in the autotools
+       test scripts.
+
+       Fixed and tests added for vds issues.
+       (ADB,NAF - 2016/04/21, HDFFV-9756)
+
+     - CMake added the h5format_convert tool and tests that were only in the autotools
+       build and test scripts. The autotools test script was reworked to allow CMake
+       to execute the test suite in parallel.
+
+       Also, h5clear tool and tests were added to the misc folder.
+
+       Fixed.
+       (ADB - 2016/04/21, HDFFV-9766)
+
+     - CMake added the h5watch tool and argument tests that were only in the autotools
+       build and test scripts. The POSIX only tests were not added to CMake.
+
+       CMake HL tools files were refactored to move the CMake test scripts into each tool folder.
+
+       Fixed.
+       (ADB - 2016/04/21, HDFFV-9770)
+
+     - Configure fails to detect valid real KINDs on FreeBSD 9.3 (i386) with Fortran enabled.
+
+       Fixed. Added the exponential option to SELECTED_REAL_KIND to distinguish 
+       KINDs of same precision
+       (MSB - 2016/05/14,HDFFV-9912)
+
+     - Configure fails in sed command on FreeBSD 9.3 (i386) with Fortran enabled.
+  
+       Fixed.
+       (MSB - 2016/05/14,HDFFV-9912)
+
+     - Compile time error in H5f90global.F90 with IBM XL Fortran 14.1.0.13 on BG/Q with Fortran
+       enabled.
+    
+       Fixed.
+       (MSB - 2016/05/16,HDFFV-9917)
+
+
 Issues Addressed in this Release Since alpha1
 =============================================
 
@@ -397,7 +466,7 @@ They are built with the configure process unless specified otherwise.
     (NASA G-ADA)                  xlC/xlC_r 10.1.0.5
                                   xlf90/xlf90_r 12.1.0.6
 
-    Linux 2.6.32-573.18.1.el6    GNU C (gcc), Fortran (gfortran), C++ (g++)
+    Linux 2.6.32-573.22.1.el6     GNU C (gcc), Fortran (gfortran), C++ (g++)
     #1 SMP x86_64 GNU/Linux       compilers:
     (mayll/platypus)                 Version 4.4.7 20120313 (Red Hat 4.4.7-16)
                                      Version 4.9.3, Version 5.2.0
@@ -409,7 +478,7 @@ They are built with the configure process unless specified otherwise.
                                      Version 15.0.3.187 Build 20150407
                                   MPICH 3.1.4 compiled with GCC 4.9.3
 
-    Linux 2.6.32-504.8.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
+    Linux 2.6.32-573.18.1.el6.ppc64 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
     #1 SMP ppc64 GNU/Linux        g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
     (ostrich)                     GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
                                   IBM XL C/C++ V13.1
@@ -445,19 +514,19 @@ They are built with the configure process unless specified otherwise.
                                   Visual Studio 2013 w/ Intel Fortran 15 (cmake)
 
     Mac OS X Mt. Lion 10.8.5      Apple clang/clang++ version 5.1 from Xcode 5.1
-    64-bit                  gfortran GNU Fortran (GCC) 4.8.2
+    64-bit                        gfortran GNU Fortran (GCC) 4.8.2
     (swallow/kite)                Intel icc/icpc/ifort version 15.0.3
 
-    Mac OS X Mavericks 10.9.5     Apple clang/clang++ version 6.0 from Xcode 6.2.0
-    64-bit                  gfortran GNU Fortran (GCC) 4.9.2
+    Mac OS X Mavericks 10.9.5     Apple clang/clang++ version 6.0 from Xcode 6.2
+    64-bit                        gfortran GNU Fortran (GCC) 4.9.2
     (wren/quail)                  Intel icc/icpc/ifort version 15.0.3
 
-    Mac OS X Yosemite 10.10.5     Apple clang/clang++ version 6.0 from Xcode 7.0.0
-    64-bit                  gfortran GNU Fortran (GCC) 4.9.2
+    Mac OS X Yosemite 10.10.5     Apple clang/clang++ version 6.0 from Xcode 7.0
+    64-bit                        gfortran GNU Fortran (GCC) 4.9.2
     (osx1010dev/osx1010test)      Intel icc/icpc/ifort version 15.0.3
 
-    Mac OS X El Capitan 10.11.3     Apple clang/clang++ version 7.0.2 from Xcode 7.0.2
-    64-bit                  gfortran GNU Fortran (GCC) 5.2.0
+    Mac OS X El Capitan 10.11.4   Apple clang/clang++ version 7.3.0 from Xcode 7.3
+    64-bit                        gfortran GNU Fortran (GCC) 5.2.0
     (osx1010dev/osx1010test)      Intel icc/icpc/ifort version 15.0.3
 
 
@@ -585,12 +654,6 @@ an issue not listed here or at the link above, and we will provide any
 information about known workarounds that we have or add it to our list of
 known issues if it is a new issue.
 
- - The JUnit-interface test may fail on Solaris platforms. The result of
-   a test for verifying the content of the error stack to stdout is
-   in a different order on Solaris then other platforms. Use make -i option
-   to test beyond the java/test folder.
-   (ADB - 2016/03/22, HDFFV-9734)
-
  - The flush/refresh test occasionally fails on OS X platforms. This is
    being investigated but no fix or workaround is available at this time.
    (DER - 2016/03/22, HDFFV-9731)
@@ -626,19 +689,12 @@ known issues if it is a new issue.
    the mapping.
    (EIP - 2016/03/20, HDFFV-9724)
 
- - When building HDF5 with Java using CMake and specifying Debug for CMAKE_BUILD_TYPE,
-   there is a missing command argument for the tests of the examples.
-
-   This error can be avoided by not building Java with Debug, HDF5_BUILD_JAVA:BOOL=OFF, 
-   or not building Examples, HDF5_BUILD_EXAMPLES:BOOL=OFF.
-   (LRK - 2016/03/30, HDFFV-9743) 
-
- - The H5Lexists API changed behavior in HDF5-1.10 when used with a file handle 
+ - The H5Lexists API changed behavior in HDF5-1.10 when used with a file handle
    and root group name ("/"):
 
    H5Lexists(fileid, "/")
 
-   In HDF5-1.8 it returns false (0) and in HDF5-1.10 it returns true (1). 
+   In HDF5-1.8 it returns false (0) and in HDF5-1.10 it returns true (1).
    The documentation will be updated with information regarding this change.
    (LRK - 2016/03/30, HDFFV-8746)
 
diff --git a/src/H5Dint.c b/src/H5Dint.c
index 06ea1e4..9359311 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -530,39 +530,47 @@ H5D__get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id
 
     HDassert(dset);
 
-    /* Get the dataset's dataspace */
-    HDassert(dset->shared->space);
-
-    /* Get the total number of elements in dataset's dataspace */
-    if((snelmts = H5S_GET_EXTENT_NPOINTS(dset->shared->space)) < 0)
-        HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve number of elements in dataspace")
-    nelmts = (hsize_t)snelmts;
-
-    /* Get the size of the dataset's datatype */
-    if(0 == (dt_size = H5T_GET_SIZE(dset->shared->type)))
-        HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve size of datatype")
-
-    /* Compute the maximum size of the dataset in bytes */
-    full_size = nelmts * dt_size;
-
-    /* Check for overflow during multiplication */
-    if(nelmts != (full_size / dt_size))
-        HGOTO_ERROR(H5E_DATASET, H5E_OVERFLOW, FAIL, "size of dataset's storage overflowed")
-
-    /* Difficult to error check, since the error value is 0 and 0 is a valid value... :-/ */
-    if(H5D__get_storage_size(dset, dxpl_id, &space_allocated) < 0)
-        HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get size of dataset's storage")
-
-    /* Decide on how much of the space is allocated */
-    if(space_allocated == 0)
-        *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED;
-    else if(space_allocated == full_size)
-        *allocation = H5D_SPACE_STATUS_ALLOCATED;
+    /* Check for chunked layout */
+    if(dset->shared->layout.type == H5D_CHUNKED) {
+        /* For chunked layout set the space status by the storage size */
+        /* Get the dataset's dataspace */
+        HDassert(dset->shared->space);
+
+        /* Get the total number of elements in dataset's dataspace */
+        if((snelmts = H5S_GET_EXTENT_NPOINTS(dset->shared->space)) < 0)
+            HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve number of elements in dataspace")
+        nelmts = (hsize_t)snelmts;
+
+        /* Get the size of the dataset's datatype */
+        if(0 == (dt_size = H5T_GET_SIZE(dset->shared->type)))
+            HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve size of datatype")
+
+        /* Compute the maximum size of the dataset in bytes */
+        full_size = nelmts * dt_size;
+
+        /* Check for overflow during multiplication */
+        if(nelmts != (full_size / dt_size))
+            HGOTO_ERROR(H5E_DATASET, H5E_OVERFLOW, FAIL, "size of dataset's storage overflowed")
+
+        /* Difficult to error check, since the error value is 0 and 0 is a valid value... :-/ */
+        if(H5D__get_storage_size(dset, dxpl_id, &space_allocated) < 0)
+            HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get size of dataset's storage")
+
+        /* Decide on how much of the space is allocated */
+        if(space_allocated == 0)
+            *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED;
+        else if(space_allocated == full_size)
+            *allocation = H5D_SPACE_STATUS_ALLOCATED;
+        else 
+            *allocation = H5D_SPACE_STATUS_PART_ALLOCATED;
+    } /* end if */
     else {
-        /* Should only happen for chunked datasets currently */
-        HDassert(dset->shared->layout.type == H5D_CHUNKED);
-
-        *allocation = H5D_SPACE_STATUS_PART_ALLOCATED;
+        /* For non-chunked layouts set space status by result of is_space_alloc
+         * function */
+        if(dset->shared->layout.ops->is_space_alloc(&dset->shared->layout.storage))
+            *allocation = H5D_SPACE_STATUS_ALLOCATED;
+        else
+            *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED;
     } /* end else */
 
 done:
diff --git a/src/H5public.h b/src/H5public.h
index 9ec7db8..44362b0 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -95,9 +95,9 @@ extern "C" {
 #define H5_VERS_MAJOR	1	/* For major interface/format changes  	     */
 #define H5_VERS_MINOR	10	/* For minor interface/format changes  	     */
 #define H5_VERS_RELEASE	0	/* For tweaks, bug-fixes, or development     */
-#define H5_VERS_SUBRELEASE ""	/* For pre-releases like snap0       */
+#define H5_VERS_SUBRELEASE "patch1"	/* For pre-releases like snap0       */
 				/* Empty string for real releases.           */
-#define H5_VERS_INFO    "HDF5 library version: 1.10.0"      /* Full version string */
+#define H5_VERS_INFO    "HDF5 library version: 1.10.0-patch1"      /* Full version string */
 
 #define H5check()	H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR,	      \
 				        H5_VERS_RELEASE)
diff --git a/src/Makefile.in b/src/Makefile.in
index 1ab9f9f..8a4ad02 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -861,13 +861,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2
 # After making changes, run bin/reconfigure to update other configure related
 # files like Makefile.in.
 LT_VERS_INTERFACE = 100
-LT_VERS_REVISION = 0
+LT_VERS_REVISION = 1
 LT_VERS_AGE = 0
 LT_CXX_VERS_INTERFACE = 100
 LT_CXX_VERS_REVISION = 0
 LT_CXX_VERS_AGE = 0
 LT_F_VERS_INTERFACE = 100
-LT_F_VERS_REVISION = 0
+LT_F_VERS_REVISION = 1
 LT_F_VERS_AGE = 0
 LT_HL_VERS_INTERFACE = 100
 LT_HL_VERS_REVISION = 0
@@ -882,7 +882,7 @@ LT_JAVA_VERS_INTERFACE = 100
 LT_JAVA_VERS_REVISION = 0
 LT_JAVA_VERS_AGE = 0
 LT_TOOLS_VERS_INTERFACE = 100
-LT_TOOLS_VERS_REVISION = 0
+LT_TOOLS_VERS_REVISION = 1
 LT_TOOLS_VERS_AGE = 0
 
 # Our main target, the HDF5 library
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 2997fe4..6f5dfa7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -20,10 +20,13 @@ set (TEST_LIB_SRCS
     ${HDF5_TEST_SOURCE_DIR}/h5test.c
     ${HDF5_TEST_SOURCE_DIR}/testframe.c
     ${HDF5_TEST_SOURCE_DIR}/cache_common.c
+    ${HDF5_TEST_SOURCE_DIR}/swmr_common.c
 )
 
 set (TEST_LIB_HEADERS
     ${HDF5_TEST_SOURCE_DIR}/h5test.h
+    ${HDF5_TEST_SOURCE_DIR}/cache_common.h
+    ${HDF5_TEST_SOURCE_DIR}/swmr_common.h
 )
 
 add_library (${HDF5_TEST_LIB_TARGET} STATIC ${TEST_LIB_SRCS} ${TEST_LIB_HEADERS})
@@ -67,85 +70,6 @@ if (BUILD_SHARED_LIBS)
 endif (BUILD_SHARED_LIBS)
 
 #-----------------------------------------------------------------------------
-# Build SWMR test programs
-#
-# These programs are currently not used in CMake tests but we build them
-# here anyway for manual testing and to ensure that the code compiles
-# on all platforms.
-#-----------------------------------------------------------------------------
-MACRO (ADD_H5_SWMR_EXE file)
-  add_executable (${file}
-    ${HDF5_TEST_SOURCE_DIR}/${file}.c
-    ${HDF5_TEST_SOURCE_DIR}/swmr_common.c
-    ${HDF5_TEST_SOURCE_DIR}/swmr_common.h
-  )
-  TARGET_NAMING (${file} STATIC)
-  TARGET_C_PROPERTIES (${file} STATIC " " " ")
-  target_link_libraries (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
-  set_target_properties (${file} PROPERTIES FOLDER test)
-  if (BUILD_SHARED_LIBS)
-    add_executable (${file}-shared
-      ${HDF5_TEST_SOURCE_DIR}/${file}.c
-      ${HDF5_TEST_SOURCE_DIR}/swmr_common.c
-      ${HDF5_TEST_SOURCE_DIR}/swmr_common.h
-    )
-    TARGET_NAMING (${file}-shared SHARED)
-    TARGET_C_PROPERTIES (${file}-shared SHARED " " " ")
-    target_link_libraries (${file}-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-    set_target_properties (${file}-shared PROPERTIES FOLDER test)
-  endif (BUILD_SHARED_LIBS)
-ENDMACRO (ADD_H5_SWMR_EXE file)
-
-set (H5_SWMR_TESTS
-    swmr_addrem_writer
-    swmr_check_compat_vfd
-    swmr_generator
-    swmr_reader
-    swmr_remove_reader
-    swmr_remove_writer
-    swmr_sparse_reader
-    swmr_sparse_writer
-    swmr_start_write
-    swmr_writer
-)
-
-foreach (test ${H5_SWMR_TESTS})
-  ADD_H5_SWMR_EXE(${test})
-endforeach (test ${H5_SWMR_TESTS})
-
-#-----------------------------------------------------------------------------
-# Build VDS SWMR test programs
-#
-# These programs are currently not used in CMake tests but we build them
-# here anyway for manual testing and to ensure that the code compiles
-# on all platforms.
-#-----------------------------------------------------------------------------
-MACRO (ADD_H5_VDS_SWMR_EXE file)
-  add_executable (${file} ${HDF5_TEST_SOURCE_DIR}/${file}.c)
-  TARGET_NAMING (${file} STATIC)
-  TARGET_C_PROPERTIES (${file} STATIC " " " ")
-  target_link_libraries (${file} ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET})
-  set_target_properties (${file} PROPERTIES FOLDER test)
-  if (BUILD_SHARED_LIBS)
-    add_executable (${file}-shared ${HDF5_TEST_SOURCE_DIR}/${file}.c)
-    TARGET_NAMING (${file}-shared SHARED)
-    TARGET_C_PROPERTIES (${file}-shared SHARED " " " ")
-    target_link_libraries (${file}-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-    set_target_properties (${file}-shared PROPERTIES FOLDER test)
-  endif (BUILD_SHARED_LIBS)
-ENDMACRO (ADD_H5_VDS_SWMR_EXE file)
-
-set (H5_VDS_SWMR_TESTS
-    vds_swmr_gen
-    vds_swmr_reader
-    vds_swmr_writer
-)
-
-foreach (test ${H5_VDS_SWMR_TESTS})
-  ADD_H5_VDS_SWMR_EXE(${test})
-endforeach (test ${H5_VDS_SWMR_TESTS})
-
-#-----------------------------------------------------------------------------
 # If plugin library tests can be tested
 #-----------------------------------------------------------------------------
   # make plugins dir
@@ -273,21 +197,27 @@ MACRO (ADD_H5_EXE file)
 ENDMACRO (ADD_H5_EXE file)
 
 set (H5_TESTS
-    accum
+    #testhdf5
+    cache
+    cache_api
+    cache_tagging
     lheap
     ohdr
     stab
     gheap
-    cache_logging
-    cork
+    farray
+    earray
+    btree2
+    fheap
     pool
+    accum
+    #hyperslab
     istore
     bittests
     dt_arith
     dtypes
     dsets
     cmpd_dset
-    chunk_info
     filter_fail
     extend
     external
@@ -295,6 +225,7 @@ set (H5_TESTS
     objcopy
     links
     unlink
+    twriteorder
     big
     mtime
     fillval
@@ -304,7 +235,9 @@ set (H5_TESTS
     app_ref
     enum
     set_extent
-    space_overflow
+    #ttsafe
+    enc_dec_plist
+    enc_dec_plist_cross_platform
     getname
     vfd
     ntypes
@@ -315,16 +248,10 @@ set (H5_TESTS
     freespace
     mf
     vds
-    farray
-    earray
-    btree2
-    fheap
-    tcheck_version
-    testmeta
     file_image
-    enc_dec_plist
-    enc_dec_plist_cross_platform
     unregister
+    cache_logging
+    cork
     swmr
 )
 
@@ -332,54 +259,39 @@ foreach (test ${H5_TESTS})
   ADD_H5_EXE(${test})
 endforeach (test ${H5_TESTS})
 
+set (H5_SWMR_TESTS
+    swmr_addrem_writer
+    swmr_check_compat_vfd
+    swmr_generator
+    swmr_reader
+    swmr_remove_reader
+    swmr_remove_writer
+    swmr_sparse_reader
+    swmr_sparse_writer
+    swmr_start_write
+    swmr_writer
+)
+
+foreach (test ${H5_SWMR_TESTS})
+  ADD_H5_EXE(${test})
+endforeach (test ${H5_SWMR_TESTS})
+
+set (H5_VDS_SWMR_TESTS
+    vds_swmr_gen
+    vds_swmr_reader
+    vds_swmr_writer
+)
+
+foreach (test ${H5_VDS_SWMR_TESTS})
+  ADD_H5_EXE(${test})
+endforeach (test ${H5_VDS_SWMR_TESTS})
+
 ##############################################################################
 ##############################################################################
 ###           A D D I T I O N A L   T E S T S                              ###
 ##############################################################################
 ##############################################################################
 
-#-- Adding test for cache
-add_executable (cache ${HDF5_TEST_SOURCE_DIR}/cache.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-TARGET_NAMING (cache STATIC)
-TARGET_C_PROPERTIES (cache STATIC " " " ")
-target_link_libraries (cache ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-set_target_properties (cache PROPERTIES FOLDER test)
-if (BUILD_SHARED_LIBS)
-  add_executable (cache-shared ${HDF5_TEST_SOURCE_DIR}/cache.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-  TARGET_NAMING (cache-shared SHARED)
-  TARGET_C_PROPERTIES (cache-shared SHARED " " " ")
-  target_link_libraries (cache-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-  set_target_properties (cache-shared PROPERTIES FOLDER test)
-endif (BUILD_SHARED_LIBS)
-
-#-- Adding test for cache_api
-add_executable (cache_api ${HDF5_TEST_SOURCE_DIR}/cache_api.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-TARGET_NAMING (cache_api STATIC)
-TARGET_C_PROPERTIES (cache_api STATIC " " " ")
-target_link_libraries (cache_api ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-set_target_properties (cache_api PROPERTIES FOLDER test)
-if (BUILD_SHARED_LIBS)
-  add_executable (cache_api-shared ${HDF5_TEST_SOURCE_DIR}/cache_api.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-  TARGET_NAMING (cache_api-shared SHARED)
-  TARGET_C_PROPERTIES (cache_api-shared SHARED " " " ")
-  target_link_libraries (cache_api-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-  set_target_properties (cache_api-shared PROPERTIES FOLDER test)
-endif (BUILD_SHARED_LIBS)
-
-#-- Adding test for cache_tagging
-add_executable (cache_tagging ${HDF5_TEST_SOURCE_DIR}/cache_tagging.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-TARGET_NAMING (cache_tagging STATIC)
-TARGET_C_PROPERTIES (cache_tagging STATIC " " " ")
-target_link_libraries (cache_tagging ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-set_target_properties (cache_tagging PROPERTIES FOLDER test)
-if (BUILD_SHARED_LIBS)
-  add_executable (cache_tagging-shared ${HDF5_TEST_SOURCE_DIR}/cache_tagging.c ${HDF5_TEST_SOURCE_DIR}/cache_common.c)
-  TARGET_NAMING (cache_tagging-shared SHARED)
-  TARGET_C_PROPERTIES (cache_tagging-shared SHARED " " " ")
-  target_link_libraries (cache_tagging-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-  set_target_properties (cache_tagging-shared PROPERTIES FOLDER test)
-endif (BUILD_SHARED_LIBS)
-
 #-- Adding test for hyperslab
 add_executable (hyperslab ${HDF5_TEST_SOURCE_DIR}/hyperslab.c)
 TARGET_NAMING (hyperslab STATIC)
@@ -432,49 +344,24 @@ if (BUILD_SHARED_LIBS)
   endif (HDF5_ENABLE_THREADSAFE)
 endif (BUILD_SHARED_LIBS)
 
-#-- Adding test for err_compat
-if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  add_executable (err_compat ${HDF5_TEST_SOURCE_DIR}/err_compat.c)
-  TARGET_NAMING (err_compat STATIC)
-  TARGET_C_PROPERTIES (err_compat STATIC " " " ")
-  target_link_libraries (err_compat ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-  set_target_properties (err_compat PROPERTIES FOLDER test)
-  if (BUILD_SHARED_LIBS)
-    add_executable (err_compat-shared ${HDF5_TEST_SOURCE_DIR}/err_compat.c)
-    TARGET_NAMING (err_compat-shared SHARED)
-    TARGET_C_PROPERTIES (err_compat-shared SHARED " " " ")
-    target_link_libraries (err_compat-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-    set_target_properties (err_compat-shared PROPERTIES FOLDER test)
-  endif (BUILD_SHARED_LIBS)
-endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-
-#-- Adding test for error_test
-add_executable (error_test ${HDF5_TEST_SOURCE_DIR}/error_test.c)
-TARGET_NAMING (error_test STATIC)
-TARGET_C_PROPERTIES (error_test STATIC " " " ")
-target_link_libraries (error_test ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-set_target_properties (error_test PROPERTIES FOLDER test)
-if (BUILD_SHARED_LIBS)
-  add_executable (error_test-shared ${HDF5_TEST_SOURCE_DIR}/error_test.c)
-  TARGET_NAMING (error_test-shared SHARED)
-  TARGET_C_PROPERTIES (error_test-shared SHARED " " " ")
-  target_link_libraries (error_test-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-  set_target_properties (error_test-shared PROPERTIES FOLDER test)
-endif (BUILD_SHARED_LIBS)
+set (H5_CHECK_TESTS
+    error_test
+    err_compat
+    tcheck_version
+    testmeta
+    #accum_swmr_reader
+    atomic_writer
+    atomic_reader
+    links_env
+    flushrefresh
+    #use_append_chunk
+    #use_append_mchunks
+    #use_disable_mdc_flushes
+)
 
-#-- Adding test for links_env
-add_executable (links_env ${HDF5_TEST_SOURCE_DIR}/links_env.c)
-TARGET_NAMING (links_env STATIC)
-TARGET_C_PROPERTIES (links_env STATIC " " " ")
-target_link_libraries (links_env ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
-set_target_properties (links_env PROPERTIES FOLDER test)
-if (BUILD_SHARED_LIBS)
-  add_executable (links_env-shared ${HDF5_TEST_SOURCE_DIR}/links_env.c)
-  TARGET_NAMING (links_env-shared SHARED)
-  TARGET_C_PROPERTIES (links_env-shared SHARED " " " ")
-  target_link_libraries (links_env-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
-  set_target_properties (links_env-shared PROPERTIES FOLDER test)
-endif (BUILD_SHARED_LIBS)
+foreach (test ${H5_CHECK_TESTS})
+  ADD_H5_EXE(${test})
+endforeach (test ${H5_CHECK_TESTS})
 
 #-- Adding test for accum_swmr_reader
 #   This has to be copied to the test directory for execve() to find it
@@ -488,7 +375,7 @@ set_target_properties (accum_swmr_reader PROPERTIES FOLDER test)
 #-- Set accum dependencies
 set_target_properties (accum PROPERTIES DEPENDS accum_swmr_reader)
 if (BUILD_SHARED_LIBS)
-  set_target_properties (accum-shared PROPERTIES DEPENDS accum_swmr_reader-shared)
+  set_target_properties (accum-shared PROPERTIES DEPENDS accum_swmr_reader)
 endif (BUILD_SHARED_LIBS)
 
 #-- Adding test for libinfo
@@ -520,4 +407,49 @@ else (BUILD_SHARED_LIBS)
   set_target_properties (plugin PROPERTIES FOLDER test)
 endif (BUILD_SHARED_LIBS)
 
+##############################################################################
+###    U S E  C A S E S  T E S T S
+##############################################################################
+set (use_append_chunk_SOURCES ${HDF5_TEST_SOURCE_DIR}/use_append_chunk.c ${HDF5_TEST_SOURCE_DIR}/use_common.c)
+add_executable (use_append_chunk ${use_append_chunk_SOURCES})
+TARGET_NAMING (use_append_chunk STATIC)
+TARGET_C_PROPERTIES (use_append_chunk STATIC " " " ")
+target_link_libraries (use_append_chunk ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (use_append_chunk PROPERTIES FOLDER test)
+if (BUILD_SHARED_LIBS)
+  add_executable (use_append_chunk-shared ${use_append_chunk_SOURCES})
+  TARGET_NAMING (use_append_chunk-shared SHARED)
+  TARGET_C_PROPERTIES (use_append_chunk-shared SHARED " " " ")
+  target_link_libraries (use_append_chunk-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
+  set_target_properties (use_append_chunk-shared PROPERTIES FOLDER test)
+endif (BUILD_SHARED_LIBS)
+
+set (use_append_mchunks_SOURCES ${HDF5_TEST_SOURCE_DIR}/use_append_mchunks.c ${HDF5_TEST_SOURCE_DIR}/use_common.c)
+add_executable (use_append_mchunks ${use_append_mchunks_SOURCES})
+TARGET_NAMING (use_append_mchunks STATIC)
+TARGET_C_PROPERTIES (use_append_mchunks STATIC " " " ")
+target_link_libraries (use_append_mchunks ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (use_append_mchunks PROPERTIES FOLDER test)
+if (BUILD_SHARED_LIBS)
+  add_executable (use_append_mchunks-shared ${use_append_mchunks_SOURCES})
+  TARGET_NAMING (use_append_mchunks-shared SHARED)
+  TARGET_C_PROPERTIES (use_append_mchunks-shared SHARED " " " ")
+  target_link_libraries (use_append_mchunks-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
+  set_target_properties (use_append_mchunks-shared PROPERTIES FOLDER test)
+endif (BUILD_SHARED_LIBS)
+
+set (use_disable_mdc_flushes_SOURCES ${HDF5_TEST_SOURCE_DIR}/use_disable_mdc_flushes.c)
+add_executable (use_disable_mdc_flushes ${use_disable_mdc_flushes_SOURCES})
+TARGET_NAMING (use_disable_mdc_flushes STATIC)
+TARGET_C_PROPERTIES (use_disable_mdc_flushes STATIC " " " ")
+target_link_libraries (use_disable_mdc_flushes ${HDF5_LIB_TARGET} ${HDF5_TEST_LIB_TARGET})
+set_target_properties (use_disable_mdc_flushes PROPERTIES FOLDER test)
+if (BUILD_SHARED_LIBS)
+  add_executable (use_disable_mdc_flushes-shared ${use_disable_mdc_flushes_SOURCES})
+  TARGET_NAMING (use_disable_mdc_flushes-shared SHARED)
+  TARGET_C_PROPERTIES (use_disable_mdc_flushes-shared SHARED " " " ")
+  target_link_libraries (use_disable_mdc_flushes-shared ${HDF5_TEST_LIBSH_TARGET} ${HDF5_LIBSH_TARGET})
+  set_target_properties (use_disable_mdc_flushes-shared PROPERTIES FOLDER test)
+endif (BUILD_SHARED_LIBS)
+
 include (CMakeTests.cmake)
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index fc8fdc3..c1adf40 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -252,9 +252,9 @@ set (HDF5_REFERENCE_TEST_FILES
     family_v16_00001.h5
     family_v16_00002.h5
     family_v16_00003.h5
+    file_image_core_test.h5
     filespace_1_6.h5
     filespace_1_8.h5
-    file_image_core_test.h5
     fill_old.h5
     filter_error.h5
     group_old.h5
@@ -320,8 +320,7 @@ if (HDF5_TEST_VFD)
 endif (HDF5_TEST_VFD)
 
 # Remove any output file left over from previous test run
-add_test (
-    NAME H5TEST-clear-testhdf5-objects
+add_test (NAME H5TEST-clear-testhdf5-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove
         coord.h5
@@ -378,8 +377,7 @@ else (HDF5_ENABLE_USING_MEMCHECKER)
       WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
   )
   if (BUILD_SHARED_LIBS)
-    add_test (
-        NAME H5TEST-shared-clear-testhdf5-objects
+    add_test (NAME H5TEST-shared-clear-testhdf5-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             coord.h5
@@ -417,79 +415,283 @@ endif (HDF5_ENABLE_USING_MEMCHECKER)
 ##############################################################################
 ##############################################################################
 
+set (test_CLEANFILES
+    accum.h5
+    cmpd_dset.h5
+    compact_dataset.h5
+    dataset.h5
+    dset_offset.h5
+    max_compact_dataset.h5
+    simple.h5
+    set_local.h5
+    random_chunks.h5
+    huge_chunks.h5
+    chunk_cache.h5
+    big_chunk.h5
+    chunk_fast.h5
+    chunk_expand.h5
+    chunk_fixed.h5
+    copy_dcpl_newfile.h5
+    partial_chunks.h5
+    layout_extend.h5
+    zero_chunk.h5
+    chunk_single.h5
+    swmr_non_latest.h5
+    earray_hdr_fd.h5
+    farray_hdr_fd.h5
+    bt2_hdr_fd.h5
+    storage_size.h5
+    dls_01_strings.h5
+    extend.h5
+    istore.h5
+    extlinks*.h5
+    frspace.h5
+    links*.h5
+    sys_file1
+    tfile*.h5
+    th5s*.h5
+    lheap.h5
+    fheap.h5
+    ohdr.h5
+    stab.h5
+    extern_*.h5
+    extern_*.raw
+    gheap*.h5
+    dt_arith1
+    dt_arith2
+    links.h5
+    links*.h5
+    extlinks16A00000.h5
+    extlinks16A00001.h5
+    extlinks16A00002.h5
+    extlinks16B-b.h5
+    extlinks16B-g.h5
+    extlinks16B-l.h5
+    extlinks16B-r.h5
+    extlinks16B-s.h5
+    extlinks19B00000.h5
+    extlinks19B00001.h5
+    extlinks19B00002.h5
+    extlinks19B00003.h5
+    extlinks19B00004.h5
+    extlinks19B00005.h5
+    extlinks19B00006.h5
+    extlinks19B00007.h5
+    extlinks19B00008.h5
+    extlinks19B00009.h5
+    extlinks19B00010.h5
+    extlinks19B00011.h5
+    extlinks19B00012.h5
+    extlinks19B00013.h5
+    extlinks19B00014.h5
+    extlinks19B00015.h5
+    extlinks19B00016.h5
+    extlinks19B00017.h5
+    extlinks19B00018.h5
+    extlinks19B00019.h5
+    extlinks19B00020.h5
+    extlinks19B00021.h5
+    extlinks19B00022.h5
+    extlinks19B00023.h5
+    extlinks19B00024.h5
+    extlinks19B00025.h5
+    extlinks19B00026.h5
+    extlinks19B00027.h5
+    extlinks19B00028.h5
+    tmp
+    big.data
+    big*.h5
+    stdio.h5
+    sec2.h5
+    dtypes0.h5
+    dtypes1.h5
+    dtypes2.h5
+    dtypes3.h5
+    dtypes4.h5
+    dtypes5.h5
+    dtypes6.h5
+    dtypes7.h5
+    dtypes8.h5
+    dtypes9.h5
+    dtypes10.h5
+    dt_arith1.h5
+    dt_arith2.h5
+    tattr.h5
+    tselect.h5
+    mtime.h5
+    unlink.h5
+    unicode.h5
+    coord.h5
+    fillval_*.h5
+    fillval.raw
+    mount_*.h5
+    testmeta.h5
+    ttime.h5
+    trefer1.h5
+    trefer2.h5
+    trefer3.h5
+    tvltypes.h5
+    tvlstr.h5
+    tvlstr2.h5
+    twriteorder.dat
+    flush.h5
+    enum1.h5
+    titerate.h5
+    ttsafe.h5
+    tarray1.h5
+    tgenprop.h5
+    tmisc*.h5
+    set_extent1.h5
+    set_extent2.h5
+    set_extent3.h5
+    set_extent4.h5
+    set_extent5.h5
+    ext1.bin
+    ext2.bin
+    getname.h5
+    getname1.h5
+    getname2.h5
+    getname3.h5
+    sec2_file.h5
+    direct_file.h5
+    family_file000*.h5
+    new_family_v16_000*.h5
+    multi_file-r.h5
+    multi_file-s.h5
+    core_file
+    plugin.h5
+    new_move_a.h5
+    new_move_b.h5
+    ntypes.h5
+    dangle.h5
+    error_test.h5
+    err_compat.h5
+    dtransform.h5
+    test_filters.h5
+    get_file_name.h5
+    tstint1.h5
+    tstint2.h5
+    unlink_chunked.h5
+    btree2.h5
+    btree2_tmp.h5
+    objcopy_src.h5
+    objcopy_dst.h5
+    objcopy_ext.dat
+    trefer1.h5
+    trefer2.h5
+    app_ref.h5
+    farray.h5
+    farray_tmp.h5
+    earray.h5
+    earray_tmp.h5
+    efc0.h5
+    efc1.h5
+    efc2.h5
+    efc3.h5
+    efc4.h5
+    efc5.h5
+    log_vfd_out.log
+    new_multi_file_v16-r.h5
+    new_multi_file_v16-s.h5
+    split_get_file_image_test-m.h5
+    split_get_file_image_test-r.h5
+    file_image_core_test.h5.copy
+    unregister_filter_1.h5
+    unregister_filter_2.h5
+    vds_virt.h5
+    vds_dapl.h5
+    vds_src_0.h5
+    vds_src_1.h5
+    swmr_data.h5
+    use_use_append_chunk.h5
+    use_append_mchunks.h5
+    use_disable_mdc_flushes.h5
+    flushrefresh.h5
+    flushrefresh_VERIFICATION_START
+    flushrefresh_VERIFICATION_CHECKPOINT1
+    flushrefresh_VERIFICATION_CHECKPOINT2
+    flushrefresh_VERIFICATION_DONE
+    atomic_data
+    accum_swmr_big.h5
+    ohdr_swmr.h5
+    test_swmr*.h5
+    cache_logging.h5
+    cache_logging.out
+    vds_swmr.h5
+    vds_swmr_src_*.h5
+)
+
 # Remove any output file left over from previous test run
-add_test (
-    NAME H5TEST-clear-objects
+add_test (NAME H5TEST-clear-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove
-        dt_arith1.h5
-        dt_arith2.h5
-        dtransform.h5
-        dtypes3.h5
-        dtypes4.h5
-        dtypes5.h5
-        efc0.h5
-        efc1.h5
-        efc2.h5
-        efc3.h5
-        efc4.h5
-        efc5.h5
-        extlinks16A00000.h5
-        extlinks16A00001.h5
-        extlinks16A00002.h5
-        extlinks16B-b.h5
-        extlinks16B-g.h5
-        extlinks16B-l.h5
-        extlinks16B-r.h5
-        extlinks16B-s.h5
-        extlinks19B00000.h5
-        extlinks19B00001.h5
-        extlinks19B00002.h5
-        extlinks19B00003.h5
-        extlinks19B00004.h5
-        extlinks19B00005.h5
-        extlinks19B00006.h5
-        extlinks19B00007.h5
-        extlinks19B00008.h5
-        extlinks19B00009.h5
-        extlinks19B00010.h5
-        extlinks19B00011.h5
-        extlinks19B00012.h5
-        extlinks19B00013.h5
-        extlinks19B00014.h5
-        extlinks19B00015.h5
-        extlinks19B00016.h5
-        extlinks19B00017.h5
-        extlinks19B00018.h5
-        extlinks19B00019.h5
-        extlinks19B00020.h5
-        extlinks19B00021.h5
-        extlinks19B00022.h5
-        extlinks19B00023.h5
-        extlinks19B00024.h5
-        extlinks19B00025.h5
-        extlinks19B00026.h5
-        extlinks19B00027.h5
-        extlinks19B00028.h5
-        fheap.h5
-        log_vfd_out.log
-        new_multi_file_v16-r.h5
-        new_multi_file_v16-s.h5
-        objcopy_ext.dat
-        testmeta.h5
-        tstint1.h5
-        tstint2.h5
-        unregister_filter_1.h5
-        unregister_filter_2.h5
-        vds_1.h5
+        ${test_CLEANFILES}
     WORKING_DIRECTORY
         ${HDF5_TEST_BINARY_DIR}/H5TEST
 )
 
-foreach (test ${H5_TESTS})
+set (H5TEST_TESTS
+    #testhdf5
+    #cache
+    cache_api
+    cache_tagging
+    lheap
+    ohdr
+    stab
+    gheap
+    farray
+    earray
+    btree2
+    fheap
+    pool
+    accum
+    #hyperslab
+    istore
+    bittests
+    dt_arith
+    dtypes
+    dsets
+    cmpd_dset
+    filter_fail
+    extend
+    external
+    efc
+    objcopy
+    links
+    unlink
+    twriteorder
+    big
+    mtime
+    fillval
+    mount
+    flush1
+    flush2
+    app_ref
+    enum
+    set_extent
+    ttsafe
+    enc_dec_plist
+    enc_dec_plist_cross_platform
+    getname
+    vfd
+    ntypes
+    dangle
+    dtransform
+    reserved
+    cross_read
+    freespace
+    mf
+    vds
+    file_image
+    unregister
+    cache_logging
+    cork
+    swmr
+)
+
+foreach (test ${H5TEST_TESTS})
   if (${test} STREQUAL "big" AND CYGWIN)
-    add_test (
-        NAME H5TEST-${test}
+    add_test (NAME H5TEST-${test}
         COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${test}"
     )
   else (${test} STREQUAL "big" AND CYGWIN)
@@ -500,87 +702,27 @@ foreach (test ${H5_TESTS})
       ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST"
       WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
   )
-endforeach (test ${H5_TESTS})
+endforeach (test ${H5TEST_TESTS})
 
 set_tests_properties (H5TEST-flush2 PROPERTIES DEPENDS H5TEST-flush1)
 set_tests_properties (H5TEST-fheap PROPERTIES TIMEOUT 1800)
-set_tests_properties (H5TEST-testmeta PROPERTIES TIMEOUT 1800)
 set_tests_properties (H5TEST-big PROPERTIES TIMEOUT 1800)
+set_tests_properties (H5TEST-btree2 PROPERTIES TIMEOUT 1800)
 set_tests_properties (H5TEST-objcopy PROPERTIES TIMEOUT 2400)
 
 if (BUILD_SHARED_LIBS)
   # Remove any output file left over from previous test run
-  add_test (
-      NAME H5TEST-shared-clear-objects
+  add_test (NAME H5TEST-shared-clear-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove
-          dt_arith1.h5
-          dt_arith2.h5
-          dtransform.h5
-          dtypes3.h5
-          dtypes4.h5
-          dtypes5.h5
-          efc0.h5
-          efc1.h5
-          efc2.h5
-          efc3.h5
-          efc4.h5
-          efc5.h5
-          extlinks16A00000.h5
-          extlinks16A00001.h5
-          extlinks16A00002.h5
-          extlinks16B-b.h5
-          extlinks16B-g.h5
-          extlinks16B-l.h5
-          extlinks16B-r.h5
-          extlinks16B-s.h5
-          extlinks19B00000.h5
-          extlinks19B00001.h5
-          extlinks19B00002.h5
-          extlinks19B00003.h5
-          extlinks19B00004.h5
-          extlinks19B00005.h5
-          extlinks19B00006.h5
-          extlinks19B00007.h5
-          extlinks19B00008.h5
-          extlinks19B00009.h5
-          extlinks19B00010.h5
-          extlinks19B00011.h5
-          extlinks19B00012.h5
-          extlinks19B00013.h5
-          extlinks19B00014.h5
-          extlinks19B00015.h5
-          extlinks19B00016.h5
-          extlinks19B00017.h5
-          extlinks19B00018.h5
-          extlinks19B00019.h5
-          extlinks19B00020.h5
-          extlinks19B00021.h5
-          extlinks19B00022.h5
-          extlinks19B00023.h5
-          extlinks19B00024.h5
-          extlinks19B00025.h5
-          extlinks19B00026.h5
-          extlinks19B00027.h5
-          extlinks19B00028.h5
-          fheap.h5
-          log_vfd_out.log
-          new_multi_file_v16-r.h5
-          new_multi_file_v16-s.h5
-          objcopy_ext.dat
-          testmeta.h5
-          tstint1.h5
-          tstint2.h5
-          unregister_filter_1.h5
-          unregister_filter_2.h5
+          ${test_CLEANFILES}
       WORKING_DIRECTORY
           ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
   )
 
-  foreach (test ${H5_TESTS})
+  foreach (test ${H5TEST_TESTS})
     if (${test} STREQUAL "big" AND CYGWIN)
-      add_test (
-          NAME H5TEST-shared-${test}
+      add_test (NAME H5TEST-shared-${test}
           COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${test}-shared"
       )
     else (${test} STREQUAL "big" AND CYGWIN)
@@ -591,12 +733,12 @@ if (BUILD_SHARED_LIBS)
         ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST-shared"
         WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
     )
-  endforeach (test ${H5_TESTS})
+  endforeach (test ${H5TEST_TESTS})
 
   set_tests_properties (H5TEST-shared-flush2 PROPERTIES DEPENDS H5TEST-shared-flush1)
   set_tests_properties (H5TEST-shared-fheap PROPERTIES TIMEOUT 1800)
-  set_tests_properties (H5TEST-shared-testmeta PROPERTIES TIMEOUT 1800)
   set_tests_properties (H5TEST-shared-big PROPERTIES TIMEOUT 1800)
+  set_tests_properties (H5TEST-shared-btree2 PROPERTIES TIMEOUT 1800)
   set_tests_properties (H5TEST-shared-objcopy PROPERTIES TIMEOUT 2400)
 endif (BUILD_SHARED_LIBS)
 
@@ -608,8 +750,7 @@ endif (BUILD_SHARED_LIBS)
 
 #-- Adding test for cache
 if (NOT CYGWIN)
-  add_test (
-      NAME H5TEST-clear-cache-objects
+  add_test (NAME H5TEST-clear-cache-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove
           cache_test.h5
@@ -625,62 +766,9 @@ if (NOT CYGWIN)
   set_tests_properties (H5TEST-cache PROPERTIES TIMEOUT 2400)
 endif (NOT CYGWIN)
 
-#-- Adding test for cache_api
-add_test (
-    NAME H5TEST-clear-cache_api-objects
-    COMMAND    ${CMAKE_COMMAND}
-        -E remove
-        cache_api_test.h5
-    WORKING_DIRECTORY
-        ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-add_test (NAME H5TEST-cache_api COMMAND $<TARGET_FILE:cache_api>)
-set_tests_properties (H5TEST-cache_api PROPERTIES
-    DEPENDS H5TEST-clear-cache_api-objects
-    ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST"
-    WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-
-#-- Adding test for cache_tagging
-add_test (
-    NAME H5TEST-clear-cache_tagging-objects
-    COMMAND    ${CMAKE_COMMAND}
-        -E remove
-        tagging_test.h5
-        tagging_ext_test.h5
-    WORKING_DIRECTORY
-        ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-add_test (NAME H5TEST-cache_tagging COMMAND $<TARGET_FILE:cache_tagging>)
-set_tests_properties (H5TEST-cache_tagging PROPERTIES
-    DEPENDS H5TEST-clear-cache_tagging-objects
-    ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST"
-    WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-
-#-- Adding test for ttsafe
-add_test (
-    NAME H5TEST-clear-ttsafe-objects
-    COMMAND    ${CMAKE_COMMAND}
-        -E remove
-        ttsafe_error.h5
-        ttsafe_dcreate.h5
-        ttsafe_cancel.h5
-        ttsafe_acreate.h5
-    WORKING_DIRECTORY
-        ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-add_test (NAME H5TEST-ttsafe COMMAND $<TARGET_FILE:ttsafe>)
-set_tests_properties (H5TEST-ttsafe PROPERTIES
-    DEPENDS H5TEST-clear-ttsafe-objects
-    ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST"
-    WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
-)
-
 #-- Adding test for err_compat
 if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-  add_test (
-      NAME H5TEST-clear-err_compat-objects
+  add_test (NAME H5TEST-clear-err_compat-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove
           err_compat.txt
@@ -706,8 +794,7 @@ if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 
 #-- Adding test for error_test
-add_test (
-    NAME H5TEST-clear-error_test-objects
+add_test (NAME H5TEST-clear-error_test-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove
         error_test.txt
@@ -732,8 +819,7 @@ set_tests_properties (H5TEST-error_test PROPERTIES
 )
 
 #-- Adding test for links_env
-add_test (
-    NAME H5TEST-clear-links_env-objects
+add_test (NAME H5TEST-clear-links_env-objects
     COMMAND    ${CMAKE_COMMAND}
         -E remove
         links_env.txt
@@ -762,8 +848,7 @@ set_tests_properties (H5TEST-links_env PROPERTIES
 )
 
 #-- Adding test for libinfo
-add_test (
-    NAME H5TEST-testlibinfo
+add_test (NAME H5TEST-testlibinfo
     COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$<TARGET_FILE:${HDF5_LIB_TARGET}>" -P "${GREP_RUNNER}"
     WORKING_DIRECTORY
         ${HDF5_TEST_BINARY_DIR}/H5TEST
@@ -772,8 +857,7 @@ add_test (
 if (BUILD_SHARED_LIBS)
   #-- Adding test for cache
   if (NOT CYGWIN)
-    add_test (
-        NAME H5TEST-shared-clear-cache-objects
+    add_test (NAME H5TEST-shared-clear-cache-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             cache_test.h5
@@ -789,62 +873,9 @@ if (BUILD_SHARED_LIBS)
     set_tests_properties (H5TEST-shared-cache PROPERTIES TIMEOUT 2400)
   endif (NOT CYGWIN)
 
-  #-- Adding test for cache_api
-  add_test (
-      NAME H5TEST-shared-clear-cache_api-objects
-      COMMAND    ${CMAKE_COMMAND}
-          -E remove
-          cache_api_test.h5
-      WORKING_DIRECTORY
-          ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-  add_test (NAME H5TEST-shared-cache_api COMMAND $<TARGET_FILE:cache_api-shared>)
-  set_tests_properties (H5TEST-shared-cache_api PROPERTIES
-      DEPENDS H5TEST-shared-clear-cache_api-objects
-      ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST-shared"
-      WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-
-  #-- Adding test for cache_tagging
-  add_test (
-      NAME H5TEST-shared-clear-cache_tagging-objects
-      COMMAND    ${CMAKE_COMMAND}
-          -E remove
-          tagging_test.h5
-          tagging_ext_test.h5
-      WORKING_DIRECTORY
-          ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-  add_test (NAME H5TEST-shared-cache_tagging COMMAND $<TARGET_FILE:cache_tagging-shared>)
-  set_tests_properties (H5TEST-shared-cache_tagging PROPERTIES
-      DEPENDS H5TEST-shared-clear-cache_tagging-objects
-      ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST-shared"
-      WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-
-  #-- Adding test for ttsafe
-  add_test (
-      NAME H5TEST-shared-clear-ttsafe-objects
-      COMMAND    ${CMAKE_COMMAND}
-          -E remove
-          ttsafe_error.h5
-          ttsafe_dcreate.h5
-          ttsafe_cancel.h5
-          ttsafe_acreate.h5
-      WORKING_DIRECTORY
-          ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-  add_test (NAME H5TEST-shared-ttsafe COMMAND $<TARGET_FILE:ttsafe-shared>)
-  set_tests_properties (H5TEST-shared-ttsafe PROPERTIES
-      DEPENDS H5TEST-shared-clear-ttsafe-objects
-      ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST-shared"
-      WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
-  )
-
   #-- Adding test for err_compat
   if (HDF5_ENABLE_DEPRECATED_SYMBOLS)
-    add_test (
-        NAME H5TEST-shared-clear-err_compat-objects
+    add_test (NAME H5TEST-shared-clear-err_compat-objects
         COMMAND    ${CMAKE_COMMAND}
             -E remove
             err_compat.txt
@@ -870,8 +901,7 @@ if (BUILD_SHARED_LIBS)
   endif (HDF5_ENABLE_DEPRECATED_SYMBOLS)
 
   #-- Adding test for error_test
-  add_test (
-      NAME H5TEST-shared-clear-error_test-objects
+  add_test (NAME H5TEST-shared-clear-error_test-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove
           error_test.txt
@@ -896,8 +926,7 @@ if (BUILD_SHARED_LIBS)
   )
 
   #-- Adding test for links_env
-  add_test (
-      NAME H5TEST-shared-clear-links_env-objects
+  add_test (NAME H5TEST-shared-clear-links_env-objects
       COMMAND    ${CMAKE_COMMAND}
           -E remove
           links_env.txt
@@ -926,8 +955,7 @@ if (BUILD_SHARED_LIBS)
   )
 
   #-- Adding test for libinfo
-  add_test (
-      NAME H5TEST-shared-testlibinfo
+  add_test (NAME H5TEST-shared-testlibinfo
       COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$<TARGET_FILE:${HDF5_LIBSH_TARGET}>" -P "${GREP_RUNNER}"
       WORKING_DIRECTORY
           ${HDF5_TEST_BINARY_DIR}/H5TEST-shared
@@ -950,6 +978,14 @@ set_tests_properties (H5PLUGIN-plugin PROPERTIES
 )
 
 ##############################################################################
+###    S W M R  T E S T S
+##############################################################################
+#       testflushrefresh.sh: flushrefresh
+#       test_usecases.sh: use_append_chunk, use_append_mchunks, use_disable_mdc_flushes
+#       testswmr.sh: swmr*
+#       testvdsswmr.sh: vds_swmr*
+
+##############################################################################
 ##############################################################################
 ###                         V F D   T E S T S                              ###
 ##############################################################################
@@ -993,7 +1029,7 @@ if (HDF5_TEST_VFD)
       set_extent
       ttsafe
       getname
-      vfd
+#      vfd
       ntypes
       dangle
       dtransform
@@ -1005,11 +1041,11 @@ if (HDF5_TEST_VFD)
       earray
       btree2
       #fheap
-      error_test
-      err_compat
-      tcheck_version
-      testmeta
-      links_env
+#      error_test
+#      err_compat
+      #tcheck_version
+#      testmeta
+#      links_env
       unregister
   )
   if (NOT CYGWIN)
@@ -1020,8 +1056,7 @@ if (HDF5_TEST_VFD)
     if (${vfdtest} STREQUAL "flush1" OR ${vfdtest} STREQUAL "flush2")
       if (${vfdname} STREQUAL "multi" OR ${vfdname} STREQUAL "split")
         if (NOT BUILD_SHARED_LIBS AND NOT CMAKE_BUILD_TYPE MATCHES Debug)
-          add_test (
-              NAME VFD-${vfdname}-${vfdtest}
+          add_test (NAME VFD-${vfdname}-${vfdtest}
               COMMAND "${CMAKE_COMMAND}"
                   -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}>"
                   -D "TEST_ARGS:STRING="
@@ -1036,8 +1071,7 @@ if (HDF5_TEST_VFD)
               WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname}
           )
           if (BUILD_SHARED_LIBS)
-            add_test (
-                NAME VFD-${vfdname}-${test}-shared
+            add_test (NAME VFD-${vfdname}-${test}-shared
                 COMMAND "${CMAKE_COMMAND}"
                     -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}-shared>"
                     -D "TEST_ARGS:STRING="
@@ -1053,20 +1087,17 @@ if (HDF5_TEST_VFD)
             )
           endif (BUILD_SHARED_LIBS)
         else (NOT BUILD_SHARED_LIBS AND NOT CMAKE_BUILD_TYPE MATCHES Debug)
-          add_test (
-              NAME VFD-${vfdname}-${vfdtest}
+          add_test (NAME VFD-${vfdname}-${vfdtest}
               COMMAND ${CMAKE_COMMAND} -E echo "SKIP VFD-${vfdname}-${vfdtest}"
           )
           if (BUILD_SHARED_LIBS)
-            add_test (
-                NAME VFD-${vfdname}-${test}-shared
+            add_test (NAME VFD-${vfdname}-${test}-shared
                 COMMAND ${CMAKE_COMMAND} -E echo "SKIP VFD-${vfdname}-${vfdtest}-shared"
             )
           endif (BUILD_SHARED_LIBS)
         endif(NOT BUILD_SHARED_LIBS AND NOT CMAKE_BUILD_TYPE MATCHES Debug)
       else (${vfdname} STREQUAL "multi" OR ${vfdname} STREQUAL "split")
-        add_test (
-            NAME VFD-${vfdname}-${vfdtest}
+        add_test (NAME VFD-${vfdname}-${vfdtest}
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}>"
                 -D "TEST_ARGS:STRING="
@@ -1081,8 +1112,7 @@ if (HDF5_TEST_VFD)
             WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname}
         )
         if (BUILD_SHARED_LIBS)
-          add_test (
-            NAME VFD-${vfdname}-${test}-shared
+          add_test (NAME VFD-${vfdname}-${test}-shared
               COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}-shared>"
                 -D "TEST_ARGS:STRING="
@@ -1099,8 +1129,7 @@ if (HDF5_TEST_VFD)
         endif (BUILD_SHARED_LIBS)
       endif (${vfdname} STREQUAL "multi" OR ${vfdname} STREQUAL "split")
     else (${vfdtest} STREQUAL "flush1" OR ${vfdtest} STREQUAL "flush2")
-      add_test (
-          NAME VFD-${vfdname}-${vfdtest}
+      add_test (NAME VFD-${vfdname}-${vfdtest}
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}>"
               -D "TEST_ARGS:STRING="
@@ -1115,8 +1144,7 @@ if (HDF5_TEST_VFD)
           WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname}
       )
       if (BUILD_SHARED_LIBS)
-        add_test (
-            NAME VFD-${vfdname}-${vfdtest}-shared
+        add_test (NAME VFD-${vfdname}-${vfdtest}-shared
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:${vfdtest}-shared>"
                 -D "TEST_ARGS:STRING="
@@ -1139,8 +1167,7 @@ if (HDF5_TEST_VFD)
       if (WIN32)
         CHECK_VFD_TEST (${test} ${vfdname} ${resultcode})
       else (WIN32)
-        add_test (
-            NAME VFD-${vfdname}-${test}
+        add_test (NAME VFD-${vfdname}-${test}
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:${test}>"
                 -D "TEST_ARGS:STRING="
@@ -1155,8 +1182,7 @@ if (HDF5_TEST_VFD)
             WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname}
         )
         if (BUILD_SHARED_LIBS)
-          add_test (
-              NAME VFD-${vfdname}-${test}-shared
+          add_test (NAME VFD-${vfdname}-${test}-shared
               COMMAND "${CMAKE_COMMAND}"
                   -D "TEST_PROGRAM=$<TARGET_FILE:${test}-shared>"
                   -D "TEST_ARGS:STRING="
@@ -1177,21 +1203,20 @@ if (HDF5_TEST_VFD)
     set_tests_properties (VFD-${vfdname}-flush1 PROPERTIES TIMEOUT 10)
     set_tests_properties (VFD-${vfdname}-flush2 PROPERTIES TIMEOUT 10)
     set_tests_properties (VFD-${vfdname}-istore PROPERTIES TIMEOUT 1800)
-    if (NOT CYGWIN)
-      set_tests_properties (VFD-${vfdname}-cache PROPERTIES TIMEOUT 1800)
-    endif (NOT CYGWIN)
+#    if (NOT CYGWIN)
+#      set_tests_properties (VFD-${vfdname}-cache PROPERTIES TIMEOUT 1800)
+#    endif (NOT CYGWIN)
     if (BUILD_SHARED_LIBS)
       set_tests_properties (VFD-${vfdname}-flush2-shared PROPERTIES DEPENDS VFD-${vfdname}-flush1-shared)
       set_tests_properties (VFD-${vfdname}-flush1-shared PROPERTIES TIMEOUT 10)
       set_tests_properties (VFD-${vfdname}-flush2-shared PROPERTIES TIMEOUT 10)
       set_tests_properties (VFD-${vfdname}-istore-shared PROPERTIES TIMEOUT 1800)
-      if (NOT CYGWIN)
-        set_tests_properties (VFD-${vfdname}-cache-shared PROPERTIES TIMEOUT 1800)
-      endif (NOT CYGWIN)
+#      if (NOT CYGWIN)
+#        set_tests_properties (VFD-${vfdname}-cache-shared PROPERTIES TIMEOUT 1800)
+#      endif (NOT CYGWIN)
     endif (BUILD_SHARED_LIBS)
     if (HDF5_TEST_FHEAP_VFD)
-      add_test (
-          NAME VFD-${vfdname}-fheap
+      add_test (NAME VFD-${vfdname}-fheap
           COMMAND "${CMAKE_COMMAND}"
               -D "TEST_PROGRAM=$<TARGET_FILE:fheap>"
               -D "TEST_ARGS:STRING="
@@ -1207,8 +1232,7 @@ if (HDF5_TEST_VFD)
           WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${vfdname}
       )
       if (BUILD_SHARED_LIBS)
-        add_test (
-            NAME VFD-${vfdname}-fheap-shared
+        add_test (NAME VFD-${vfdname}-fheap-shared
             COMMAND "${CMAKE_COMMAND}"
                 -D "TEST_PROGRAM=$<TARGET_FILE:fheap-shared>"
                 -D "TEST_ARGS:STRING="
@@ -1256,6 +1280,7 @@ if (HDF5_BUILD_GENERATORS)
       gen_cross
       gen_deflate
       gen_filters
+      gen_idx
       gen_new_array
       gen_new_fill
       gen_new_group
diff --git a/test/atomic_reader.c b/test/atomic_reader.c
index 5d9ea68..a0fb1e0 100644
--- a/test/atomic_reader.c
+++ b/test/atomic_reader.c
@@ -28,15 +28,17 @@
 /* Headers */
 /***********/
 
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
+
+#if !defined(WIN32) && !defined(__MINGW32__)
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 /****************/
 /* Local Macros */
@@ -345,3 +347,15 @@ main(int argc, char *argv[])
 
     return(0);
 }
+
+#else /* WIN32 / MINGW32 */
+
+int
+main(void)
+{
+    printf("Non-POSIX platform. Exiting.\n");
+    return EXIT_FAILURE;
+} /* end main() */
+
+#endif /* WIN32 / MINGW32 */
+
diff --git a/test/atomic_writer.c b/test/atomic_writer.c
index 9f37ecc..44cdfb0 100644
--- a/test/atomic_writer.c
+++ b/test/atomic_writer.c
@@ -29,17 +29,19 @@
 /* Headers */
 /***********/
 
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <unistd.h>
 #include <assert.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
-#include <errno.h>
+
+#if !defined(WIN32) && !defined(__MINGW32__)
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
 
 /****************/
 /* Local Macros */
@@ -228,3 +230,15 @@ main(int argc, char *argv[])
 error:
     return(-1);
 } /* main() */
+
+#else /* WIN32 / MINGW32 */
+
+int
+main(void)
+{
+    printf("Non-POSIX platform. Exiting.\n");
+    return EXIT_FAILURE;
+} /* end main() */
+
+#endif /* WIN32 / MINGW32 */
+
diff --git a/test/cache.c b/test/cache.c
index b96819f..119f5bb 100644
--- a/test/cache.c
+++ b/test/cache.c
@@ -15859,8 +15859,6 @@ check_flush_protected_err(void)
  *-------------------------------------------------------------------------
  */
 
-extern H5C_t * saved_cache;
-
 static unsigned
 check_destroy_pinned_err(void)
 {
diff --git a/test/cache_api.c b/test/cache_api.c
index bebb828..eb4a7cc 100644
--- a/test/cache_api.c
+++ b/test/cache_api.c
@@ -27,8 +27,6 @@
 
 /* extern declarations */
 
-extern const char *FILENAME[];
-
 /* global variable declarations: */
 
 /* macro definitions */
diff --git a/test/cache_common.h b/test/cache_common.h
index 3f08081..37b5883 100644
--- a/test/cache_common.h
+++ b/test/cache_common.h
@@ -537,27 +537,34 @@ struct expected_entry_status
 
 

 /* global variable externs: */
+H5TEST_DLLVAR H5C_t * saved_cache;
 
-extern haddr_t saved_actual_base_addr;
-extern hbool_t write_permitted;
-extern hbool_t pass; /* set to false on error */
-extern const char *failure_mssg;
+H5TEST_DLLVAR const char *FILENAME[];
 
-extern test_entry_t * entries[NUMBER_OF_ENTRY_TYPES];
-extern const int32_t max_indices[NUMBER_OF_ENTRY_TYPES];
-extern const size_t entry_sizes[NUMBER_OF_ENTRY_TYPES];
-extern const haddr_t base_addrs[NUMBER_OF_ENTRY_TYPES];
-extern const haddr_t alt_base_addrs[NUMBER_OF_ENTRY_TYPES];
-extern const char * entry_type_names[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR haddr_t saved_actual_base_addr;
+H5TEST_DLLVAR hbool_t write_permitted;
+H5TEST_DLLVAR hbool_t pass; /* set to false on error */
+H5TEST_DLLVAR const char *failure_mssg;
+
+H5TEST_DLLVAR test_entry_t * entries[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const int32_t max_indices[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const size_t entry_sizes[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const haddr_t base_addrs[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const haddr_t alt_base_addrs[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const char * entry_type_names[NUMBER_OF_ENTRY_TYPES];
 
 /* callback table extern */
 
-extern const H5C_class_t types[NUMBER_OF_ENTRY_TYPES];
+H5TEST_DLLVAR const H5C_class_t types[NUMBER_OF_ENTRY_TYPES];
 
 

+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* function declarations: */
 
-void add_flush_op(int target_type,
+H5TEST_DLL void add_flush_op(int target_type,
                   int target_idx,
                   int op_code,
                   int type,
@@ -567,74 +574,74 @@ void add_flush_op(int target_type,
                   unsigned * order);
 
 
-void addr_to_type_and_index(haddr_t addr,
+H5TEST_DLL void addr_to_type_and_index(haddr_t addr,
                             int32_t * type_ptr,
                             int32_t * index_ptr);
 
 #if 0 /* keep this for a while -- it may be useful */
-haddr_t type_and_index_to_addr(int32_t type,
+H5TEST_DLL haddr_t type_and_index_to_addr(int32_t type,
                                int32_t idx);
 #endif
 
-void dirty_entry(H5F_t * file_ptr,
+H5TEST_DLL void dirty_entry(H5F_t * file_ptr,
                  int32_t type,
                  int32_t idx,
                  hbool_t dirty_pin);
 
-void expunge_entry(H5F_t * file_ptr,
+H5TEST_DLL void expunge_entry(H5F_t * file_ptr,
                    int32_t type,
                    int32_t idx);
 
-void insert_entry(H5F_t * file_ptr,
+H5TEST_DLL void insert_entry(H5F_t * file_ptr,
                   int32_t type,
                   int32_t idx,
                   unsigned int flags);
 
-void mark_entry_dirty(int32_t type,
-		      int32_t idx);
+H5TEST_DLL void mark_entry_dirty(int32_t type,
+            int32_t idx);
 
-void move_entry(H5C_t * cache_ptr,
+H5TEST_DLL void move_entry(H5C_t * cache_ptr,
                 int32_t type,
                 int32_t idx,
                 hbool_t main_addr);
 
-void protect_entry(H5F_t * file_ptr,
+H5TEST_DLL void protect_entry(H5F_t * file_ptr,
                    int32_t type,
                    int32_t idx);
 
-void protect_entry_ro(H5F_t * file_ptr,
+H5TEST_DLL void protect_entry_ro(H5F_t * file_ptr,
                       int32_t type,
                       int32_t idx);
 
-void pin_entry(int32_t type,
+H5TEST_DLL void pin_entry(int32_t type,
                  int32_t idx);
 
-hbool_t entry_in_cache(H5C_t * cache_ptr,
+H5TEST_DLL hbool_t entry_in_cache(H5C_t * cache_ptr,
                        int32_t type,
                        int32_t idx);
 
-void create_pinned_entry_dependency(H5F_t * file_ptr,
-		                    int pinning_type,
-		                    int pinning_idx,
-		                    int pinned_type,
-		                    int pinned_idx);
+H5TEST_DLL void create_pinned_entry_dependency(H5F_t * file_ptr,
+                            int pinning_type,
+                            int pinning_idx,
+                            int pinned_type,
+                            int pinned_idx);
 
-void reset_entries(void);
+H5TEST_DLL void reset_entries(void);
 
-void cork_entry_type(H5F_t * file_ptr, int32_t type);
-void uncork_entry_type(H5F_t * file_ptr, int32_t type);
+H5TEST_DLL void cork_entry_type(H5F_t * file_ptr, int32_t type);
+H5TEST_DLL void uncork_entry_type(H5F_t * file_ptr, int32_t type);
 
 
 
-void resize_entry(H5F_t * file_ptr,
+H5TEST_DLL void resize_entry(H5F_t * file_ptr,
                   int32_t type,
                   int32_t idx,
                   size_t new_size,
                   hbool_t in_cache);
 
-H5F_t *setup_cache(size_t max_cache_size, size_t min_clean_size);
+H5TEST_DLL H5F_t *setup_cache(size_t max_cache_size, size_t min_clean_size);
 
-void row_major_scan_forward(H5F_t * file_ptr,
+H5TEST_DLL void row_major_scan_forward(H5F_t * file_ptr,
                             int32_t max_index,
                             int32_t lag,
                             hbool_t verbose,
@@ -649,7 +656,7 @@ void row_major_scan_forward(H5F_t * file_ptr,
                             int dirty_destroys,
                             int dirty_unprotects);
 
-void hl_row_major_scan_forward(H5F_t * file_ptr,
+H5TEST_DLL void hl_row_major_scan_forward(H5F_t * file_ptr,
                                int32_t max_index,
                                hbool_t verbose,
                                hbool_t reset_stats,
@@ -657,7 +664,7 @@ void hl_row_major_scan_forward(H5F_t * file_ptr,
                                hbool_t display_detailed_stats,
                                hbool_t do_inserts);
 
-void row_major_scan_backward(H5F_t * file_ptr,
+H5TEST_DLL void row_major_scan_backward(H5F_t * file_ptr,
                              int32_t max_index,
                              int32_t lag,
                              hbool_t verbose,
@@ -672,7 +679,7 @@ void row_major_scan_backward(H5F_t * file_ptr,
                              int dirty_destroys,
                              int dirty_unprotects);
 
-void hl_row_major_scan_backward(H5F_t * file_ptr,
+H5TEST_DLL void hl_row_major_scan_backward(H5F_t * file_ptr,
                                 int32_t max_index,
                                 hbool_t verbose,
                                 hbool_t reset_stats,
@@ -680,7 +687,7 @@ void hl_row_major_scan_backward(H5F_t * file_ptr,
                                 hbool_t display_detailed_stats,
                                 hbool_t do_inserts);
 
-void col_major_scan_forward(H5F_t * file_ptr,
+H5TEST_DLL void col_major_scan_forward(H5F_t * file_ptr,
                             int32_t max_index,
                             int32_t lag,
                             hbool_t verbose,
@@ -690,7 +697,7 @@ void col_major_scan_forward(H5F_t * file_ptr,
                             hbool_t do_inserts,
                             int dirty_unprotects);
 
-void hl_col_major_scan_forward(H5F_t * file_ptr,
+H5TEST_DLL void hl_col_major_scan_forward(H5F_t * file_ptr,
                                int32_t max_index,
                                hbool_t verbose,
                                hbool_t reset_stats,
@@ -699,7 +706,7 @@ void hl_col_major_scan_forward(H5F_t * file_ptr,
                                hbool_t do_inserts,
                                int dirty_unprotects);
 
-void col_major_scan_backward(H5F_t * file_ptr,
+H5TEST_DLL void col_major_scan_backward(H5F_t * file_ptr,
                              int32_t max_index,
                              int32_t lag,
                              hbool_t verbose,
@@ -709,7 +716,7 @@ void col_major_scan_backward(H5F_t * file_ptr,
                              hbool_t do_inserts,
                              int dirty_unprotects);
 
-void hl_col_major_scan_backward(H5F_t * file_ptr,
+H5TEST_DLL void hl_col_major_scan_backward(H5F_t * file_ptr,
                                 int32_t max_index,
                                 hbool_t verbose,
                                 hbool_t reset_stats,
@@ -718,69 +725,73 @@ void hl_col_major_scan_backward(H5F_t * file_ptr,
                                 hbool_t do_inserts,
                                 int dirty_unprotects);
 
-void takedown_cache(H5F_t * file_ptr,
+H5TEST_DLL void takedown_cache(H5F_t * file_ptr,
                     hbool_t dump_stats,
                     hbool_t dump_detailed_stats);
 
-void flush_cache(H5F_t * file_ptr,
+H5TEST_DLL void flush_cache(H5F_t * file_ptr,
                  hbool_t destroy_entries,
                  hbool_t dump_stats,
                  hbool_t dump_detailed_stats);
 
-void unpin_entry(int32_t type,
+H5TEST_DLL void unpin_entry(int32_t type,
                  int32_t idx);
 
-void unprotect_entry(H5F_t * file_ptr,
+H5TEST_DLL void unprotect_entry(H5F_t * file_ptr,
                      int32_t type,
                      int32_t idx,
                      unsigned int flags);
 
-void verify_clean(void);
+H5TEST_DLL void verify_clean(void);
 
-void verify_entry_status(H5C_t * cache_ptr,
-		         int tag,
+H5TEST_DLL void verify_entry_status(H5C_t * cache_ptr,
+                int tag,
                          int num_entries,
                          struct expected_entry_status expected[]);
 
-void verify_unprotected(void);
+H5TEST_DLL void verify_unprotected(void);
 
-void create_flush_dependency(int32_t parent_type,
+H5TEST_DLL void create_flush_dependency(int32_t parent_type,
              int32_t parent_idx,
              int32_t child_type,
              int32_t child_idx);
 
-void destroy_flush_dependency(int32_t parent_type,
+H5TEST_DLL void destroy_flush_dependency(int32_t parent_type,
              int32_t parent_idx,
              int32_t child_type,
              int32_t child_idx);
 
 /*** H5AC level utility functions ***/
 
-hbool_t resize_configs_are_equal(const H5C_auto_size_ctl_t *a,
+H5TEST_DLL hbool_t resize_configs_are_equal(const H5C_auto_size_ctl_t *a,
     const H5C_auto_size_ctl_t *b, hbool_t compare_init);
 
-void check_and_validate_cache_hit_rate(hid_t file_id,
+H5TEST_DLL void check_and_validate_cache_hit_rate(hid_t file_id,
                                        double * hit_rate_ptr,
                                        hbool_t dump_data,
                                        int64_t min_accesses,
                                        double min_hit_rate);
 
-void check_and_validate_cache_size(hid_t file_id,
+H5TEST_DLL void check_and_validate_cache_size(hid_t file_id,
                                    size_t * max_size_ptr,
                                    size_t * min_clean_size_ptr,
                                    size_t * cur_size_ptr,
                                    int32_t * cur_num_entries_ptr,
                                    hbool_t dump_data);
 
-void validate_mdc_config(hid_t file_id,
+H5TEST_DLL void validate_mdc_config(hid_t file_id,
                          H5AC_cache_config_t * ext_config_ptr,
                          hbool_t compare_init,
                          int test_num);
 
 /** Debugging functions -- normally commented out ***/
 #if 0
-void dump_LRU(H5F_t * file_ptr);
-#endif 
+H5TEST_DLL void dump_LRU(H5F_t * file_ptr);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _CACHE_COMMON_H */
 
diff --git a/test/dsets.c b/test/dsets.c
index b2b6c6f..9afea7c 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -20,16 +20,13 @@
  * Purpose:	Tests the dataset interface (H5D)
  */
 
-#define H5D_FRIEND		/*suppress error about including H5FDpkg	  */
+#define H5D_FRIEND		/*suppress error about including H5Dpkg	  */
 #define H5D_TESTING
 
 #define H5FD_FRIEND		/*suppress error about including H5FDpkg	  */
 #define H5FD_TESTING
 
-#define H5Z_FRIEND		/*suppress error about including H5FDpkg	  */
-
-#include <stdlib.h>
-#include <time.h>
+#define H5Z_FRIEND		/*suppress error about including H5Zpkg	  */
 
 #include "h5test.h"
 #include "H5srcdir.h"
diff --git a/test/gen_plist.c b/test/gen_plist.c
index ae49d81..ea3c6c7 100644
--- a/test/gen_plist.c
+++ b/test/gen_plist.c
@@ -17,11 +17,17 @@
  * generate plist file
  */
 
-#include <assert.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
+#ifdef H5_STDC_HEADERS
+#   include <assert.h>
+#   include <fcntl.h>
+#   include <stdio.h>
+#   include <stdlib.h>
+#endif
+
+#ifdef H5_HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+
 #include "H5private.h"
 #include "hdf5.h"
 
diff --git a/test/h5test.c b/test/h5test.c
index 723ecdc..146f3c0 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -22,8 +22,7 @@
  */
 
 #undef NDEBUG      /*override -DNDEBUG      */
-#include <sys/types.h>
-#include <sys/stat.h>
+
 #include "h5test.h"
 #include "H5srcdir.h"
 
diff --git a/test/swmr_common.h b/test/swmr_common.h
index 31b5fa6..a2cee71 100644
--- a/test/swmr_common.h
+++ b/test/swmr_common.h
@@ -56,17 +56,25 @@ typedef struct {
 /********************/
 /* Global Variables */
 /********************/
-extern symbol_info_t *symbol_info[NLEVELS];
-extern unsigned symbol_count[NLEVELS];
+H5TEST_DLLVAR symbol_info_t *symbol_info[NLEVELS];
+H5TEST_DLLVAR unsigned symbol_count[NLEVELS];
 
 /**************/
 /* Prototypes */
 /**************/
-symbol_info_t * choose_dataset(void);
-hid_t create_symbol_datatype(void);
-int generate_name(char *name_buf, unsigned level, unsigned count);
-int generate_symbols(void);
-int shutdown_symbols(void);
-int print_metadata_retries_info(hid_t fid);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+H5TEST_DLL symbol_info_t * choose_dataset(void);
+H5TEST_DLL hid_t create_symbol_datatype(void);
+H5TEST_DLL int generate_name(char *name_buf, unsigned level, unsigned count);
+H5TEST_DLL int generate_symbols(void);
+H5TEST_DLL int shutdown_symbols(void);
+H5TEST_DLL int print_metadata_retries_info(hid_t fid);
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _SWMR_COMMON_H */
diff --git a/test/test_usecases.sh.in b/test/test_usecases.sh.in
index b88aee7..1cae191 100644
--- a/test/test_usecases.sh.in
+++ b/test/test_usecases.sh.in
@@ -100,6 +100,7 @@ TOOLTEST() {
 
     if [ $exit_code -eq 0 ];then
 	echo "$RESULT_PASSED"
+	test yes = "$verbose" && sed 's/^/    /' < $actual
     else
 	echo "$RESULT_FAILED"
 	nerrors="`expr $nerrors + 1`"
diff --git a/test/ttsafe_cancel.c b/test/ttsafe_cancel.c
index 9bbec34..7f8cd53 100644
--- a/test/ttsafe_cancel.c
+++ b/test/ttsafe_cancel.c
@@ -161,7 +161,7 @@ void *tts_cancel_thread(void H5_ATTR_UNUSED *arg)
     ret=H5Diterate(&buffer, H5T_NATIVE_INT, dataspace, tts_cancel_callback, &dataset);
     assert(ret>=0);
 
-    sleep(3);
+    HDsleep(3);
 
     datavalue = 100;
     ret=H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &datavalue);
@@ -190,7 +190,7 @@ herr_t tts_cancel_callback(void *elem, hid_t H5_ATTR_UNUSED type_id, unsigned H5
     int ret;
 
     tts_cancel_barrier();
-    sleep(3);
+    HDsleep(3);
 
     if (value != 1) {
         TestErrPrintf("Error! Element value should be 1 and not %d\n", value);
diff --git a/test/twriteorder.c b/test/twriteorder.c
index 0dd768c..5b22144 100644
--- a/test/twriteorder.c
+++ b/test/twriteorder.c
@@ -63,6 +63,13 @@
 
 #include "h5test.h"
 
+/* This test uses many POSIX things that are not available on
+ * Windows. We're using a check for fork(2) here as a proxy for
+ * all POSIX/Unix/Linux things until this test can be made
+ * more platform-independent.
+ */
+#ifdef H5_HAVE_FORK
+
 #define DATAFILE   "twriteorder.dat"
 /* #define READERS_MAX	10 */	/* max number of readers */
 #define BLOCKSIZE_DFT   1024	/* 1KB */
@@ -98,15 +105,15 @@ part_t  launch_g;
 void
 usage(const char *prog)
 {
-    fprintf(stderr, "usage: %s [OPTIONS]\n", prog);
-    fprintf(stderr, "  OPTIONS\n");
-    fprintf(stderr, "     -h            Print a usage message and exit\n");
-    fprintf(stderr, "     -l w|r        launch writer or reader only. [default: launch both]\n");
-    fprintf(stderr, "     -b N          Block size [default: %d]\n", BLOCKSIZE_DFT);
-    fprintf(stderr, "     -p N          Partition size [default: %d]\n", PARTITION_DFT);
-    fprintf(stderr, "     -n N          Number of linked blocks [default: %d]\n", NLINKEDBLOCKS_DFT);
-    fprintf(stderr, "     where N is an integer value\n");
-    fprintf(stderr, "\n");
+    HDfprintf(stderr, "usage: %s [OPTIONS]\n", prog);
+    HDfprintf(stderr, "  OPTIONS\n");
+    HDfprintf(stderr, "     -h            Print a usage message and exit\n");
+    HDfprintf(stderr, "     -l w|r        launch writer or reader only. [default: launch both]\n");
+    HDfprintf(stderr, "     -b N          Block size [default: %d]\n", BLOCKSIZE_DFT);
+    HDfprintf(stderr, "     -p N          Partition size [default: %d]\n", PARTITION_DFT);
+    HDfprintf(stderr, "     -n N          Number of linked blocks [default: %d]\n", NLINKEDBLOCKS_DFT);
+    HDfprintf(stderr, "     where N is an integer value\n");
+    HDfprintf(stderr, "\n");
 }
 
 /* Setup test parameters by parsing command line options.
@@ -129,25 +136,25 @@ parse_option(int argc, char * const argv[])
 	switch (c) {
 	  case 'h':
 	    usage(progname_g);
-	    exit(0);
+	    HDexit(0);
 	    break;
 	  case 'b':	/* number of planes to write/read */
 	    if ((blocksize_g = atoi(optarg)) <= 0){
-		fprintf(stderr, "bad blocksize %s, must be a positive integer\n", optarg);
+		HDfprintf(stderr, "bad blocksize %s, must be a positive integer\n", optarg);
 		usage(progname_g);
 		Hgoto_error(-1);
 	    };
 	    break;
 	  case 'n':	/* number of planes to write/read */
 	    if ((nlinkedblock_g = atoi(optarg)) < 2){
-		fprintf(stderr, "bad number of linked blocks %s, must be greater than 1.\n", optarg);
+		HDfprintf(stderr, "bad number of linked blocks %s, must be greater than 1.\n", optarg);
 		usage(progname_g);
 		Hgoto_error(-1);
 	    };
 	    break;
 	  case 'p':	/* number of planes to write/read */
 	    if ((part_size_g = atoi(optarg)) <= 0){
-		fprintf(stderr, "bad partition size %s, must be a positive integer\n", optarg);
+		HDfprintf(stderr, "bad partition size %s, must be a positive integer\n", optarg);
 		usage(progname_g);
 		Hgoto_error(-1);
 	    };
@@ -161,7 +168,7 @@ parse_option(int argc, char * const argv[])
 		launch_g = UC_WRITER;
 		break;
 	      default:
-		fprintf(stderr, "launch value(%c) should be w or r only.\n", *optarg);
+		HDfprintf(stderr, "launch value(%c) should be w or r only.\n", *optarg);
 		usage(progname_g);
 		Hgoto_error(-1);
 		break;
@@ -169,19 +176,19 @@ parse_option(int argc, char * const argv[])
 	    printf("launch = %d\n", launch_g);
 	    break;
 	  case '?':
-	    fprintf(stderr, "getopt returned '%c'.\n", c);
+	    HDfprintf(stderr, "getopt returned '%c'.\n", c);
 	    usage(progname_g);
 	    Hgoto_error(-1);
 	  default:
-	    fprintf(stderr, "getopt returned unexpected value.\n");
-	    fprintf(stderr, "Unexpected value is %d\n", c);
+	    HDfprintf(stderr, "getopt returned unexpected value.\n");
+	    HDfprintf(stderr, "Unexpected value is %d\n", c);
 	    Hgoto_error(-1);
 	}
     }
 
     /* verify partition size must be >= blocksize */
     if (part_size_g < blocksize_g ){
-	fprintf(stderr, "Blocksize %d should not be bigger than partition size %d\n",
+	HDfprintf(stderr, "Blocksize %d should not be bigger than partition size %d\n",
 	    blocksize_g, part_size_g);
 	Hgoto_error(-1);                                                                  
     }
@@ -362,7 +369,7 @@ main(int argc, char *argv[])
     if (launch_g != UC_READER){
 	printf("Creating skeleton data file for test...\n");
 	if (create_wo_file() < 0){
-	    fprintf(stderr, "***encounter error\n");
+	    HDfprintf(stderr, "***encounter error\n");
 	    Hgoto_error(1);
 	}else
 	    printf("File created.\n");
@@ -372,12 +379,12 @@ main(int argc, char *argv[])
 
     if (launch_g==UC_READWRITE){
 	/* fork process */
-	if((childpid = fork()) < 0) {
-	    perror("fork");
+	if((childpid = HDfork()) < 0) {
+	    HDperror("fork");
 	    Hgoto_error(1);
 	};
     };
-    mypid = getpid();
+    mypid = HDgetpid();
 
     /* ============= */
     /* launch reader */
@@ -387,12 +394,12 @@ main(int argc, char *argv[])
 	if(0 == childpid) {
 	    printf("%d: launch reader process\n", mypid);
 	    if (read_wo_file() < 0){
-		fprintf(stderr, "read_wo_file encountered error\n");
-		exit(1);
+		HDfprintf(stderr, "read_wo_file encountered error\n");
+		HDexit(1);
 	    }
 	    /* Reader is done. Clean up by removing the data file */
 	    HDremove(DATAFILE);
-	    exit(0);
+	    HDexit(0);
 	}
     }
 
@@ -402,7 +409,7 @@ main(int argc, char *argv[])
     /* this process continues to launch the writer */
     printf("%d: continue as the writer process\n", mypid);
     if (write_wo_file() < 0){
-	fprintf(stderr, "write_wo_file encountered error\n");
+	HDfprintf(stderr, "write_wo_file encountered error\n");
 	Hgoto_error(1);
     }
 
@@ -410,8 +417,8 @@ main(int argc, char *argv[])
     /* If readwrite, collect exit code of child process */
     /* ================================================ */
     if (launch_g == UC_READWRITE){
-	if ((tmppid = waitpid(childpid, &child_status, child_wait_option)) < 0){
-	    perror("waitpid");
+	if ((tmppid = HDwaitpid(childpid, &child_status, child_wait_option)) < 0){
+	    HDperror("waitpid");
 	    Hgoto_error(1);
 	}
 	if (WIFEXITED(child_status)){
@@ -436,3 +443,15 @@ done:
 
     return(ret_value);
 }
+
+#else /* H5_HAVE_FORK */
+
+int
+main(void)
+{
+    HDfprintf(stderr, "Non-POSIX platform. Skipping.\n");
+    return EXIT_SUCCESS;
+} /* end main() */
+
+#endif /* H5_HAVE_FORK */
+
diff --git a/test/use.h b/test/use.h
index 45b4a49..a207e26 100644
--- a/test/use.h
+++ b/test/use.h
@@ -15,12 +15,6 @@
 /*
  * Use Case Header file: common definitions for use cases tests.
  */
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 #include "h5test.h"
 
 /* Macro definitions */
diff --git a/test/use_append_chunk.c b/test/use_append_chunk.c
index a3219c2..1dd76c9 100644
--- a/test/use_append_chunk.c
+++ b/test/use_append_chunk.c
@@ -57,9 +57,16 @@
  * 	    o	The Reader will see all new data written by Writer.
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
-/* Created: Albert Cheng, 2013/5/28.
- * Modified:
+/* Created: Albert Cheng, 2013/5/28 */
+
+#include "h5test.h"
+
+/* This test uses many POSIX things that are not available on
+ * Windows. We're using a check for fork(2) here as a proxy for
+ * all POSIX/Unix/Linux things until this test can be made
+ * more platform-independent.
  */
+#ifdef H5_HAVE_FORK
 
 #include "use.h"
 
@@ -212,3 +219,15 @@ done:
 
     return(ret_value);
 }
+
+#else /* H5_HAVE_FORK */
+
+int
+main(void)
+{
+    HDfprintf(stderr, "Non-POSIX platform. Skipping.\n");
+    return EXIT_SUCCESS;
+} /* end main() */
+
+#endif /* H5_HAVE_FORK */
+
diff --git a/test/use_append_mchunks.c b/test/use_append_mchunks.c
index b19fe57..7728225 100644
--- a/test/use_append_mchunks.c
+++ b/test/use_append_mchunks.c
@@ -50,9 +50,16 @@
  * 
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
-/* Created: Albert Cheng, 2013/6/1.
- * Modified:
+/* Created: Albert Cheng, 2013/6/1 */
+
+#include "h5test.h"
+
+/* This test uses many POSIX things that are not available on
+ * Windows. We're using a check for fork(2) here as a proxy for
+ * all POSIX/Unix/Linux things until this test can be made
+ * more platform-independent.
  */
+#ifdef H5_HAVE_FORK
 
 #include "use.h"
 
@@ -205,3 +212,15 @@ done:
 
     return(ret_value);
 }
+
+#else /* H5_HAVE_FORK */
+
+int
+main(void)
+{
+    HDfprintf(stderr, "Non-POSIX platform. Skipping.\n");
+    return EXIT_SUCCESS;
+} /* end main() */
+
+#endif /* H5_HAVE_FORK */
+
diff --git a/test/use_common.c b/test/use_common.c
index 905a8e9..bedfb3a 100644
--- a/test/use_common.c
+++ b/test/use_common.c
@@ -12,6 +12,15 @@
  * access to either file, you may request a copy from help at hdfgroup.org.     *
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
+#include "h5test.h"
+
+/* This test uses many POSIX things that are not available on
+ * Windows. We're using a check for fork(2) here as a proxy for
+ * all POSIX/Unix/Linux things until this test can be made
+ * more platform-independent.
+ */
+#ifdef H5_HAVE_FORK
+
 #include "use.h"
 
 #define H5D_FRIEND		/*suppress error about including H5Dpkg	  */
@@ -21,18 +30,18 @@
 void
 usage(const char *prog)
 {
-    fprintf(stderr, "usage: %s [OPTIONS]\n", prog);
-    fprintf(stderr, "  OPTIONS\n");
-    fprintf(stderr, "     -h, --help            Print a usage message and exit\n");
-    fprintf(stderr, "     -f FN                 Test file name [default: %s.h5]\n", prog);
-    fprintf(stderr, "     -i N, --iteration=N   Number of iterations to repeat the whole thing. [default: 1]\n");
-    fprintf(stderr, "     -l w|r                launch writer or reader only. [default: launch both]\n");
-    fprintf(stderr, "     -n N, --nplanes=N     Number of planes to write/read. [default: 1000]\n");
-    fprintf(stderr, "     -s N, --swmr=N        Use SWMR mode (0: no, non-0: yes) default is yes\n");
-    fprintf(stderr, "     -z N, --chunksize=N   Chunk size [default: %d]\n", Chunksize_DFT);
-    fprintf(stderr, "     -y N, --chunkplanes=N Number of planes per chunk [default: 1]\n");
-    fprintf(stderr, "\n");
-}
+    HDfprintf(stderr, "usage: %s [OPTIONS]\n", prog);
+    HDfprintf(stderr, "  OPTIONS\n");
+    HDfprintf(stderr, "     -h, --help            Print a usage message and exit\n");
+    HDfprintf(stderr, "     -f FN                 Test file name [default: %s.h5]\n", prog);
+    HDfprintf(stderr, "     -i N, --iteration=N   Number of iterations to repeat the whole thing. [default: 1]\n");
+    HDfprintf(stderr, "     -l w|r                launch writer or reader only. [default: launch both]\n");
+    HDfprintf(stderr, "     -n N, --nplanes=N     Number of planes to write/read. [default: 1000]\n");
+    HDfprintf(stderr, "     -s N, --swmr=N        Use SWMR mode (0: no, non-0: yes) default is yes\n");
+    HDfprintf(stderr, "     -z N, --chunksize=N   Chunk size [default: %d]\n", Chunksize_DFT);
+    HDfprintf(stderr, "     -y N, --chunkplanes=N Number of planes per chunk [default: 1]\n");
+    HDfprintf(stderr, "\n");
+} /* end usage() */
 
 /* Setup Use Case parameters by parsing command line options.
 * Setup default values if not set by options. */
@@ -547,7 +556,7 @@ int read_uc_file(hbool_t towait)
 	    }
 	    nonewplane++;
 	    /* pause for a second */
-	    sleep(1);
+        HDsleep(1);
 	}
 	for (nplane=nplane_old; nplane < dims[0]; nplane++){
 	    /* read planes between last old nplanes and current extent */
@@ -629,3 +638,5 @@ int read_uc_file(hbool_t towait)
 	return 0;
 }
 
+#endif /* H5_HAVE_FORK */
+
diff --git a/test/use_disable_mdc_flushes.c b/test/use_disable_mdc_flushes.c
index 5fd013f..67739ac 100644
--- a/test/use_disable_mdc_flushes.c
+++ b/test/use_disable_mdc_flushes.c
@@ -19,6 +19,13 @@
 
 #include "h5test.h"
 
+/* This test uses many POSIX things that are not available on
+ * Windows. We're using a check for fork(2) here as a proxy for
+ * all POSIX/Unix/Linux things until this test can be made
+ * more platform-independent.
+ */
+#ifdef H5_HAVE_FORK
+
 #define H5D_FRIEND		/*suppress error about including H5Dpkg	  */
 #define H5D_TESTING
 #include "H5Dpkg.h"
@@ -529,3 +536,15 @@ done:
 
     return(ret_value);
 }
+
+#else /* H5_HAVE_FORK */
+
+int
+main(void)
+{
+    HDfprintf(stderr, "Non-POSIX platform. Skipping.\n");
+    return EXIT_SUCCESS;
+} /* end main() */
+
+#endif /* H5_HAVE_FORK */
+
diff --git a/test/vds.c b/test/vds.c
index 1c3dcca..50523f0 100644
--- a/test/vds.c
+++ b/test/vds.c
@@ -332,6 +332,7 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl,
 {
     hid_t       file = -1;      /* File */
     hid_t       dset = -1;      /* Virtual dataset */
+    H5D_space_status_t space_status; /* Dataset space status */
     void        *plist_buf = NULL; /* Serialized property list buffer */
     H5O_info_t  oinfo;          /* Object info struct */
     htri_t      tri_ret;
@@ -352,6 +353,12 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl,
         if((dset = H5Dcreate2(file, "vdset", H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
             TEST_ERROR
 
+        /* Test H5Dget_space_status */
+        if(H5Dget_space_status(dset, &space_status) < 0)
+            TEST_ERROR
+        if(space_status != H5D_SPACE_STATUS_ALLOCATED)
+            TEST_ERROR
+
         /* Reopen dataset if requested */
         if(config >= TEST_API_REOPEN_DSET) {
             /* Close dataset */
@@ -401,6 +408,12 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl,
         if(oinfo.meta_size.attr.index_size != (hsize_t)0)
             TEST_ERROR
 
+        /* Test H5Dget_space_status */
+        if(H5Dget_space_status(dset, &space_status) < 0)
+            TEST_ERROR
+        if(space_status != H5D_SPACE_STATUS_ALLOCATED)
+            TEST_ERROR
+
         /* Close dataset */
         if(H5Dclose(dset) < 0)
             TEST_ERROR
diff --git a/testpar/t_shapesame.c b/testpar/t_shapesame.c
index 8be1610..f6392aa 100644
--- a/testpar/t_shapesame.c
+++ b/testpar/t_shapesame.c
@@ -4764,7 +4764,7 @@ void pause_proc(void)
 	    }
 	    printf("waiting(%ds) for file %s ...\n", time_int, greenlight);
 	    fflush(stdout);
-	    sleep(time_int);
+	    HDsleep(time_int);
 	}
     MPI_Barrier(MPI_COMM_WORLD);
 }
diff --git a/testpar/t_span_tree.c b/testpar/t_span_tree.c
index 6e233a9..f1487eb 100644
--- a/testpar/t_span_tree.c
+++ b/testpar/t_span_tree.c
@@ -2615,7 +2615,7 @@ lower_dim_size_comp_test(void)
     int  	use_collective_io = 1;
     hid_t	dset_type = H5T_NATIVE_UINT;
 #if 0
-   sleep(60);
+   HDsleep(60);
 #endif
     HDcompile_assert(sizeof(uint32_t) == sizeof(unsigned));
     for ( use_collective_io = (hbool_t)0; 
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index b7a68d9..2059bed 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -88,7 +88,7 @@ void pause_proc(void)
 	    }
 	    printf("waiting(%ds) for file %s ...\n", time_int, greenlight);
 	    fflush(stdout);
-	    sleep(time_int);
+	    HDsleep(time_int);
 	}
     MPI_Barrier(MPI_COMM_WORLD);
 }
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index fd47379..0b6faa8 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -45,5 +45,8 @@ add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5stat)
 #-- Add the h5dump and test executables
 add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5dump)
 
+#-- Add the h5dump and test executables
+add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/h5format_convert)
+
 #-- Add the perform and test executables
 add_subdirectory (${HDF5_TOOLS_SOURCE_DIR}/perform)
diff --git a/tools/h5copy/CMakeTests.cmake b/tools/h5copy/CMakeTests.cmake
index 9002e5a..4ef49ee 100644
--- a/tools/h5copy/CMakeTests.cmake
+++ b/tools/h5copy/CMakeTests.cmake
@@ -22,7 +22,7 @@
   file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
   foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${listfiles}" NAME)
+    get_filename_component(fname "${listfiles}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
     #message (STATUS " Copying ${listfiles}")
     add_custom_command (
diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake
index 0595edd..e58f90c 100644
--- a/tools/h5diff/CMakeTests.cmake
+++ b/tools/h5diff/CMakeTests.cmake
@@ -44,12 +44,17 @@
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-1.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-2.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_comp_vl_strs.h5
-      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5
-      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen1.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_enum_invalid_values.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmptest.he5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmptest2.he5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmpSingleSiteBethe.reference.h5
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmpSingleSiteBethe.output.h5
       # tools/testfiles/vds
       ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_a.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_b.h5
@@ -119,6 +124,7 @@
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_26.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_27.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_28.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_30.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_300.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_400.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_401.txt
@@ -255,6 +261,8 @@
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_710.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_80.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_90.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_tmp1.txt
+      ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_tmp2.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v1.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v2.txt
       ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v3.txt
@@ -267,7 +275,7 @@
   # copy test files from source to build dir
   #
   foreach (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${h5_tstfiles}" NAME)
+    get_filename_component(fname "${h5_tstfiles}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
     #message (STATUS " Copying ${fname}")
     add_custom_command (
@@ -930,6 +938,15 @@ ADD_H5_TEST (h5diff_27 1 -v ${FILE3} ${FILE3} t1 t2)
 ADD_H5_TEST (h5diff_28 1 -v ${FILE3} ${FILE3} l1 l2)
 
 # ##############################################################################
+# # Enum value tests (may become more comprehensive in the future)
+# ##############################################################################
+
+# 3.0
+# test enum types which may have invalid values
+ADD_H5_TEST (h5diff_30 1 -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2)
+
+
+# ##############################################################################
 # # Dataset datatypes
 # ##############################################################################
 
@@ -1073,6 +1090,10 @@ ADD_H5_TEST (h5diff_631 0 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp18 g1/f
 # 7.  attributes
 # ##############################################################################
 ADD_H5_TEST (h5diff_70 1 -v ${FILE5} ${FILE6})
+# temporary test to verify HDF5-8625
+ADD_H5_TEST (h5diff_tmp1 0 tmptest2.he5 tmptest.he5)
+# temporary test to verify HDF5-8639
+ADD_H5_TEST (h5diff_tmp2 1 tmpSingleSiteBethe.output.h5 tmpSingleSiteBethe.reference.h5)
 
 # ##################################################
 #  attrs with verbose option level
@@ -1115,8 +1136,10 @@ ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2})
 ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10})
 
 # 11. floating point comparison
+# double value
 ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1  g1/d2)
 
+# float value
 ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2)
 
 # with --use-system-epsilon for double value. expect less differences
@@ -1361,7 +1384,7 @@ ADD_H5_TEST (h5diff_517 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1)
 ADD_H5_TEST (h5diff_518 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1)
 
 # ##############################################################################
-# # Exclude path (--exclude-path)
+# # Exclude objects (--exclude-path)
 # ##############################################################################
 #
 # Same structure, same names and different value.
diff --git a/tools/h5diff/testfiles/h5diff_v1.txt b/tools/h5diff/testfiles/h5diff_v1.txt
index 31a3eae..8210cf9 100644
--- a/tools/h5diff/testfiles/h5diff_v1.txt
+++ b/tools/h5diff/testfiles/h5diff_v1.txt
@@ -7,7 +7,7 @@ file1     file2
 group  : </> and </>
 0 differences found
 dataset: </vds_dset> and </vds_dset>
-Not comparable: </vds_dset> or </vds_dset> is an empty dataset
+Warning: </vds_dset> or </vds_dset> is a virtual dataset
 Not comparable: </vds_dset> has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8]
 and </vds_dset> has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14]
 0 differences found
diff --git a/tools/h5diff/testfiles/h5diff_v3.txt b/tools/h5diff/testfiles/h5diff_v3.txt
index 8c5d2a2..57af303 100644
--- a/tools/h5diff/testfiles/h5diff_v3.txt
+++ b/tools/h5diff/testfiles/h5diff_v3.txt
@@ -1,4 +1,4 @@
-Not comparable: </vds_dset> or </vds_dset> is an empty dataset
+Warning: </vds_dset> or </vds_dset> is a virtual dataset
 Not comparable: </vds_dset> has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8]
 and </vds_dset> has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14]
 EXIT CODE: 0
diff --git a/tools/h5diff/testh5diff.sh.in b/tools/h5diff/testh5diff.sh.in
index fec6035..0dfdaa2 100644
--- a/tools/h5diff/testh5diff.sh.in
+++ b/tools/h5diff/testh5diff.sh.in
@@ -120,6 +120,10 @@ $SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5
 $SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5
 $SRC_H5DIFF_TESTFILES/non_comparables1.h5
 $SRC_H5DIFF_TESTFILES/non_comparables2.h5
+$SRC_H5DIFF_TESTFILES/tmptest.he5
+$SRC_H5DIFF_TESTFILES/tmptest2.he5
+$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5
+$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5
 $SRC_TOOLS_TESTFILES/vds/1_a.h5
 $SRC_TOOLS_TESTFILES/vds/1_b.h5
 $SRC_TOOLS_TESTFILES/vds/1_c.h5
@@ -327,10 +331,9 @@ $SRC_H5DIFF_TESTFILES/h5diff_80.txt
 $SRC_H5DIFF_TESTFILES/h5diff_90.txt
 $SRC_H5DIFF_TESTFILES/h5diff_tmp1.txt
 $SRC_H5DIFF_TESTFILES/h5diff_tmp2.txt
-$SRC_H5DIFF_TESTFILES/tmptest.he5
-$SRC_H5DIFF_TESTFILES/tmptest2.he5
-$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5
-$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5
+$SRC_H5DIFF_TESTFILES/h5diff_v1.txt
+$SRC_H5DIFF_TESTFILES/h5diff_v2.txt
+$SRC_H5DIFF_TESTFILES/h5diff_v3.txt
 "
 
 #
diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake
index 9f7e2b0..7897311 100644
--- a/tools/h5dump/CMakeTests.cmake
+++ b/tools/h5dump/CMakeTests.cmake
@@ -1141,10 +1141,10 @@
   ADD_H5_TEST_N (tattr-2 0 --enable-error-stack -N /\\\\/attr1 --any_path /attr4 --any_path=/attr5 tattr.h5)
   # test for header and error messages
   ADD_H5ERR_MASK_TEST (tattr-3 1 --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5)
-  # test for displaying attributes in shared datatype (also in group and dataset)
-  ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5)
   # test for displaying at least 9 attributes on root from a be machine
   ADD_H5_TEST (tattr-4_be 0 --enable-error-stack tattr4_be.h5)
+  # test for displaying attributes in shared datatype (also in group and dataset)
+  ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5)
 
   # test for displaying soft links and user-defined links
   ADD_H5_TEST (tslink-1 0 --enable-error-stack tslink.h5)
@@ -1423,6 +1423,7 @@
   # test for dataset region references
   ADD_H5_TEST (tdatareg 0 --enable-error-stack tdatareg.h5)
   ADD_H5ERR_MASK_TEST (tdataregR 0 --enable-error-stack -R tdatareg.h5)
+  ADD_H5_TEST (tattrreg 0 --enable-error-stack tattrreg.h5)
   ADD_H5ERR_MASK_TEST (tattrregR 0 -R --enable-error-stack tattrreg.h5)
   ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o)
 
diff --git a/tools/h5dump/CMakeTestsPBITS.cmake b/tools/h5dump/CMakeTestsPBITS.cmake
index e76fa0e..745d5b1 100644
--- a/tools/h5dump/CMakeTestsPBITS.cmake
+++ b/tools/h5dump/CMakeTestsPBITS.cmake
@@ -86,7 +86,7 @@
   )
 
   foreach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS})
-    GET_FILENAME_COMPONENT(fname "${pbits_h5_file}" NAME)
+    get_filename_component(fname "${pbits_h5_file}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
     #message (STATUS " Copying ${pbits_h5_file}")
     add_custom_command (
@@ -99,7 +99,7 @@
 
 
   foreach (ddl_pbits ${HDF5_REFERENCE_PBITS})
-    GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
+    get_filename_component(fname "${ddl_pbits}" NAME)
     set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
     #message (STATUS " Copying ${ddl_pbits}")
     add_custom_command (
@@ -111,7 +111,7 @@
   endforeach (ddl_pbits ${HDF5_REFERENCE_PBITS})
 
   foreach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS})
-    GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME)
+    get_filename_component(fname "${ddl_pbits}" NAME)
     set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}")
     #message (STATUS " Copying ${ddl_pbits}")
     add_custom_command (
diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake
index cc68896..dcb90e0 100644
--- a/tools/h5dump/CMakeTestsVDS.cmake
+++ b/tools/h5dump/CMakeTestsVDS.cmake
@@ -65,7 +65,7 @@
   )
 
   foreach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS})
-    GET_FILENAME_COMPONENT(fname "${vds_h5_file}" NAME)
+    get_filename_component(fname "${vds_h5_file}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}")
     #message (STATUS " Copying ${vds_h5_file}")
     add_custom_command (
@@ -78,7 +78,7 @@
 
 
   foreach (ddl_vds ${HDF5_REFERENCE_VDS})
-    GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME)
+    get_filename_component(fname "${ddl_vds}" NAME)
     set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}")
     #message (STATUS " Copying ${ddl_vds}")
     add_custom_command (
@@ -90,7 +90,7 @@
   endforeach (ddl_vds ${HDF5_REFERENCE_VDS})
 
   foreach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS})
-    GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME)
+    get_filename_component(fname "${ddl_vds}" NAME)
     set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}")
     #message (STATUS " Copying ${ddl_vds}")
     add_custom_command (
@@ -111,7 +111,7 @@
     # If using memchecker add tests without using scripts
     if (HDF5_ENABLE_USING_MEMCHECKER)
       add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN})
-      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds")
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds")
       if (NOT ${resultcode} STREQUAL "0")
         set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
       endif (NOT ${resultcode} STREQUAL "0")
@@ -144,7 +144,7 @@
     # If using memchecker add tests without using scripts
     if (HDF5_ENABLE_USING_MEMCHECKER)
       add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> -p ${ARGN})
-      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds")
+      set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds")
       if (NOT ${resultcode} STREQUAL "0")
         set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
       endif (NOT ${resultcode} STREQUAL "0")
diff --git a/tools/h5dump/CMakeTestsXML.cmake b/tools/h5dump/CMakeTestsXML.cmake
index 0a667c4..fc6cae7 100644
--- a/tools/h5dump/CMakeTestsXML.cmake
+++ b/tools/h5dump/CMakeTestsXML.cmake
@@ -128,7 +128,7 @@
   )
 
   foreach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${tst_xml_h5_file}" NAME)
+    get_filename_component(fname "${tst_xml_h5_file}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}")
     #message (STATUS " Copying ${tst_xml_h5_file}")
     add_custom_command (
@@ -140,7 +140,7 @@
   endforeach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES})
   
   foreach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES})
-    GET_FILENAME_COMPONENT(fname "${tst_xml_other_file}" NAME)
+    get_filename_component(fname "${tst_xml_other_file}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}")
     #message (STATUS " Copying ${tst_xml_other_file}")
     add_custom_command (
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index 6d481c6..944fb85 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -1034,6 +1034,8 @@ TOOLTEST tcomp-2.ddl --enable-error-stack -N /type1 --any_path /type2 --any_path
 TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5
 # test complicated compound datatype
 TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5
+# tests for bitfields and opaque data types
+TOOLTEST tbitnopaque.ddl --enable-error-stack tbitnopaque.h5
 
 #test for the nested compound type
 TOOLTEST tnestcomp-1.ddl --enable-error-stack tnestedcomp.h5
diff --git a/tools/h5format_convert/CMakeLists.txt b/tools/h5format_convert/CMakeLists.txt
new file mode 100644
index 0000000..4f6fdea
--- /dev/null
+++ b/tools/h5format_convert/CMakeLists.txt
@@ -0,0 +1,59 @@
+cmake_minimum_required (VERSION 3.1.0)
+PROJECT (HDF5_TOOLS_H5FC)
+
+#-----------------------------------------------------------------------------
+# Setup include Directories
+#-----------------------------------------------------------------------------
+INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib)
+
+# --------------------------------------------------------------------
+# Add the h5format_convert executables
+# --------------------------------------------------------------------
+add_executable (h5format_convert ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5format_convert.c)
+TARGET_NAMING (h5format_convert STATIC)
+TARGET_C_PROPERTIES (h5format_convert STATIC " " " ")
+target_link_libraries (h5format_convert  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5format_convert PROPERTIES FOLDER tools)
+
+set (H5_DEP_EXECUTABLES h5format_convert)
+
+if (BUILD_TESTING)
+  # --------------------------------------------------------------------
+  # Add the h5format_convert test executables
+  # --------------------------------------------------------------------
+  add_executable (h5fc_chk_idx ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5fc_chk_idx.c)
+  TARGET_NAMING (h5fc_chk_idx STATIC)
+  TARGET_C_PROPERTIES (h5fc_chk_idx STATIC " " " ")
+  target_link_libraries (h5fc_chk_idx ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (h5fc_chk_idx PROPERTIES FOLDER tools)
+
+  if (HDF5_BUILD_GENERATORS)
+    add_executable (h5fc_gentest ${HDF5_TOOLS_H5FC_SOURCE_DIR}/h5fc_gentest.c)
+    TARGET_NAMING (h5fc_gentest STATIC)
+    TARGET_C_PROPERTIES (h5fc_gentest STATIC " " " ")
+    target_link_libraries (h5fc_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+    set_target_properties (h5fc_gentest PROPERTIES FOLDER generator/tools)
+
+    #add_test (NAME h5fc_gentest COMMAND $<TARGET_FILE:h5fc_gentest>)
+  endif (HDF5_BUILD_GENERATORS)
+
+  include (CMakeTests.cmake)
+endif (BUILD_TESTING)
+
+##############################################################################
+##############################################################################
+###           I N S T A L L A T I O N                                      ###
+##############################################################################
+##############################################################################
+
+#-----------------------------------------------------------------------------
+# Rules for Installation of tools using make Install target
+#-----------------------------------------------------------------------------
+
+#INSTALL_PROGRAM_PDB (h5format_convert ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+
+install (
+    TARGETS
+        h5format_convert
+    RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications
+)
diff --git a/tools/h5format_convert/CMakeTests.cmake b/tools/h5format_convert/CMakeTests.cmake
new file mode 100644
index 0000000..5771aa5
--- /dev/null
+++ b/tools/h5format_convert/CMakeTests.cmake
@@ -0,0 +1,463 @@
+
+##############################################################################
+##############################################################################
+###           T E S T I N G                                                ###
+##############################################################################
+##############################################################################
+
+  # --------------------------------------------------------------------
+  # Copy all the HDF5 files from the test directory into the source directory
+  # --------------------------------------------------------------------
+  set (HDF5_REFERENCE_FILES
+      h5fc_help.ddl
+      h5fc_nooption.ddl
+      h5fc_nonexistfile.ddl
+      h5fc_d_file.ddl
+      h5fc_dname.ddl
+      h5fc_nonexistdset_file.ddl
+      h5fc_v_non_chunked.ddl
+      h5fc_v_bt1.ddl
+      h5fc_v_ndata_bt1.ddl
+      h5fc_v_all.ddl
+      h5fc_v_n_1d.ddl
+      h5fc_v_n_all.ddl
+      h5fc_ext1_i.ddl
+      h5fc_ext1_s.ddl
+      h5fc_ext1_f.ddl
+      h5fc_ext2_if.ddl
+      h5fc_ext2_is.ddl
+      h5fc_ext2_sf.ddl
+      h5fc_ext3_isf.ddl
+      old_h5fc_ext1_i.ddl
+      old_h5fc_ext1_s.ddl
+      old_h5fc_ext1_f.ddl
+      old_h5fc_ext2_if.ddl
+      old_h5fc_ext2_is.ddl
+      old_h5fc_ext2_sf.ddl
+      old_h5fc_ext3_isf.ddl
+  )
+  set (HDF5_REFERENCE_TEST_FILES
+      h5fc_non_v3.h5
+      h5fc_edge_v3.h5
+      h5fc_ext_none.h5
+      old_h5fc_ext_none.h5
+      h5fc_ext1_i.h5
+      h5fc_ext1_s.h5
+      h5fc_ext1_f.h5
+      h5fc_ext2_if.h5
+      h5fc_ext2_is.h5
+      h5fc_ext2_sf.h5
+      h5fc_ext3_isf.h5
+      old_h5fc_ext1_i.h5
+      old_h5fc_ext1_s.h5
+      old_h5fc_ext1_f.h5
+      old_h5fc_ext2_if.h5
+      old_h5fc_ext2_is.h5
+      old_h5fc_ext2_sf.h5
+      old_h5fc_ext3_isf.h5
+  )
+
+  file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+  add_custom_target(h5fc-files ALL COMMENT "Copying files needed by h5fc tests")
+
+  foreach (ddl_file ${HDF5_REFERENCE_FILES})
+    set (ddldest "${PROJECT_BINARY_DIR}/testfiles/${ddl_file}")
+    #message (STATUS " Translating ${ddl_file}")
+    add_custom_command (
+        TARGET     h5fc-files
+        POST_BUILD
+        COMMAND    ${CMAKE_COMMAND}
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${ddl_file} ${ddldest}
+    )
+  endforeach (ddl_file ${HDF5_REFERENCE_FILES})
+
+  foreach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+    set (dest "${PROJECT_BINARY_DIR}/testfiles/${h5_file}")
+    #message (STATUS " Copying ${h5_file}")
+    add_custom_command (
+        TARGET     h5fc-files
+        POST_BUILD
+        COMMAND    ${CMAKE_COMMAND}
+        ARGS       -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${h5_file} ${dest}
+    )
+  endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
+
+##############################################################################
+##############################################################################
+###           T H E   T E S T S  M A C R O S                               ###
+##############################################################################
+##############################################################################
+
+  MACRO (ADD_H5_OUTPUT testname resultfile resultcode testfile)
+    # If using memchecker add tests without using scripts
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5FC-${testname}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/outtmp.h5
+      )
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      if (NOT "${testfile}" STREQUAL "")
+          add_test (
+              NAME H5FC-${testname}-${testfile}-tmpfile
+              COMMAND    ${CMAKE_COMMAND}
+                  -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} ./testfiles/outtmp.h5
+          )
+          set_tests_properties (H5FC-${testname}-${testfile}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects")
+          add_test (
+              NAME H5FC-${testname}-${testfile}
+              COMMAND "${CMAKE_COMMAND}"
+                  -D "TEST_PROGRAM=$<TARGET_FILE:h5format_convert>"
+                  -D "TEST_ARGS=${ARGN};outtmp.h5"
+                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                  -D "TEST_OUTPUT=${testname}.out"
+                  -D "TEST_EXPECT=${resultcode}"
+                  -D "TEST_REFERENCE=${resultfile}"
+                  -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+          )
+          set_tests_properties (H5FC-${testname}-${testfile} PROPERTIES DEPENDS "H5FC-${testname}-${testfile}-tmpfile")
+          set (last_test "H5FC-${testname}-${testfile}")
+      else (NOT "${testfile}" STREQUAL "")
+          add_test (
+              NAME H5FC-${testname}-NA
+              COMMAND "${CMAKE_COMMAND}"
+                  -D "TEST_PROGRAM=$<TARGET_FILE:h5format_convert>"
+                  -D "TEST_ARGS=${ARGN}"
+                  -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                  -D "TEST_OUTPUT=${testname}.out"
+                  -D "TEST_EXPECT=${resultcode}"
+                  -D "TEST_REFERENCE=${resultfile}"
+                  -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+          )
+          set_tests_properties (H5FC-${testname}-NA PROPERTIES DEPENDS "H5FC-${testname}-clear-objects")
+          set (last_test "H5FC-${testname}-NA")
+      endif (NOT "${testfile}" STREQUAL "")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_OUTPUT)
+
+  MACRO (ADD_H5_TEST testname resultcode testfile)
+    # If using memchecker add tests without using scripts
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5FC-${testname}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/tmp.h5
+      )
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
+          NAME H5FC-${testname}-tmpfile
+          COMMAND    ${CMAKE_COMMAND}
+              -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} testfiles/tmp.h5
+      )
+      set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects")
+      add_test (
+          NAME H5FC-${testname}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5format_convert>"
+              -D "TEST_ARGS=${ARGN};./testfiles/tmp.h5"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=testfiles/${testname}.out"
+              -D "TEST_SKIP_COMPARE=TRUE"
+              -D "TEST_EXPECT=${resultcode}"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile")
+      set (last_test "H5FC-${testname}")
+     endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_TEST)
+
+  MACRO (ADD_H5_CHECK_IDX dependtest testname)
+    # If using memchecker add tests without using scripts
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5FC_CHECK_IDX-${testname}
+          COMMAND "$<TARGET_FILE:h5fc_chk_idx>" "./testfiles/tmp.h5" "${ARGN}"
+      )
+      set_tests_properties (H5FC_CHECK_IDX-${testname} PROPERTIES DEPENDS "H5FC-${dependtest}")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_CHECK_IDX)
+
+  MACRO (ADD_H5_TEST_CHECK_IDX testname resultcode testfile)
+    # If using memchecker add tests without using scripts
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5FC-${testname}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/chktmp.h5
+      )
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
+          NAME H5FC-${testname}-tmpfile
+          COMMAND    ${CMAKE_COMMAND}
+              -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testfile} testfiles/chktmp.h5
+      )
+      set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects")
+      add_test (
+          NAME H5FC-${testname}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5format_convert>"
+              -D "TEST_ARGS=-d;${ARGN};./testfiles/chktmp.h5"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=testfiles/${testname}.out"
+              -D "TEST_SKIP_COMPARE=TRUE"
+              -D "TEST_EXPECT=${resultcode}"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile")
+      add_test (
+          NAME H5FC_CHECK_IDX-${testname}
+          COMMAND "$<TARGET_FILE:h5fc_chk_idx>" "./testfiles/chktmp.h5" "${ARGN}"
+      )
+      set_tests_properties (H5FC_CHECK_IDX-${testname} PROPERTIES DEPENDS "H5FC-${testname}")
+      set (last_test "H5FC_CHECK_IDX-${testname}")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_TEST_CHECK_IDX)
+
+  MACRO (ADD_H5_H5DUMP_CHECK testname)
+    # If using memchecker add tests without using scripts
+    if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+      add_test (
+          NAME H5FC-${testname}-clear-objects
+          COMMAND    ${CMAKE_COMMAND}
+              -E remove ./testfiles/${testname}.out ./testfiles/${testname}.out.err ./testfiles/dmptmp.h5
+      )
+      if (NOT "${last_test}" STREQUAL "")
+        set_tests_properties (H5FC-${testname}-clear-objects PROPERTIES DEPENDS ${last_test})
+      endif (NOT "${last_test}" STREQUAL "")
+      add_test (
+          NAME H5FC-${testname}-tmpfile
+          COMMAND    ${CMAKE_COMMAND}
+              -E copy_if_different ${HDF5_TOOLS_H5FC_SOURCE_DIR}/testfiles/${testname}.h5 testfiles/dmptmp.h5
+      )
+      set_tests_properties (H5FC-${testname}-tmpfile PROPERTIES DEPENDS "H5FC-${testname}-clear-objects")
+      add_test (
+          NAME H5FC-${testname}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5format_convert>"
+              -D "TEST_ARGS=${ARGN};./testfiles/dmptmp.h5"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=testfiles/${testname}.out"
+              -D "TEST_SKIP_COMPARE=TRUE"
+              -D "TEST_EXPECT=0"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5FC-${testname} PROPERTIES DEPENDS "H5FC-${testname}-tmpfile")
+      add_test (
+          NAME H5FC_CHECK_DUMP-${testname}
+          COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+              -D "TEST_ARGS:STRING=-BH;./testfiles/dmptmp.h5"
+              -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+              -D "TEST_OUTPUT=testfiles/${testname}.out"
+              -D "TEST_EXPECT=0"
+              -D "TEST_REFERENCE=testfiles/${testname}.ddl"
+              -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+      )
+      set_tests_properties (H5FC_CHECK_DUMP-${testname} PROPERTIES DEPENDS "H5FC-${testname}")
+      set (last_test "H5FC_CHECK_DUMP-${testname}")
+    endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+  ENDMACRO (ADD_H5_H5DUMP_CHECK)
+
+##############################################################################
+##############################################################################
+###           T H E   T E S T S                                            ###
+##############################################################################
+##############################################################################
+
+  if (HDF5_ENABLE_USING_MEMCHECKER)
+    # Remove any output file left over from previous test run
+    add_test (
+      NAME H5FC-clearall-objects
+      COMMAND    ${CMAKE_COMMAND}
+          -E remove
+          h5fc_help.out
+          h5fc_help.out.err
+          h5fc_nooption.out
+          h5fc_nooption.out.err
+          h5fc_nonexistfile.out
+          h5fc_nonexistfile.out.err
+          h5fc_d_file.out
+          h5fc_d_file.out.err
+          h5fc_d_file-d.out
+          h5fc_d_file-d.out.err
+          h5fc_dname.out
+          h5fc_dname.out.err
+          h5fc_nonexistdset_file.out
+          h5fc_nonexistdset_file.out.err
+          h5fc_v_non_chunked.out
+          h5fc_v_non_chunked.out.err
+          h5fc_v_bt1.out
+          h5fc_v_bt1.out.err
+          h5fc_v_ndata_bt1.out
+          h5fc_v_ndata_bt1.out.err
+          h5fc_v_all.out
+          h5fc_v_all.out.err
+          h5fc_v_n_1d.out
+          h5fc_v_n_1d.out.err
+          h5fc_v_n_all.out
+          h5fc_v_n_all.out.err
+          h5fc_ext1_i.out
+          h5fc_ext1_i.out.err
+          h5fc_ext1_s.out
+          h5fc_ext1_s.out.err
+          h5fc_ext1_f.out
+          h5fc_ext1_f.out.err
+          h5fc_ext2_if.out
+          h5fc_ext2_if.out.err
+          h5fc_ext2_is.out
+          h5fc_ext2_is.out.err
+          h5fc_ext2_sf.out
+          h5fc_ext2_sf.out.err
+          h5fc_ext3_isf.out
+          h5fc_ext3_isf.out.err
+          old_h5fc_ext1_i.out
+          old_h5fc_ext1_i.out.err
+          old_h5fc_ext1_s.out
+          old_h5fc_ext1_s.out.err
+          old_h5fc_ext1_f.out
+          old_h5fc_ext1_f.out.err
+          old_h5fc_ext2_if.out
+          old_h5fc_ext2_is.out.err
+          old_h5fc_ext2_is.out
+          old_h5fc_ext2_sf.out.err
+          old_h5fc_ext3_isf.out
+          old_h5fc_ext3_isf.out.err
+          outtmp.h5
+          tmp.h5
+          chktmp.h5
+          dmptmp.h5
+    )
+    if (NOT "${last_test}" STREQUAL "")
+      set_tests_properties (H5FC-clearall-objects PROPERTIES DEPENDS ${last_test})
+    endif (NOT "${last_test}" STREQUAL "")
+    set (last_test "H5FC-clearall-objects")
+  endif (HDF5_ENABLE_USING_MEMCHECKER)
+
+# h5format_convert --help
+# h5format_convert (no options)
+# h5format_convert nonexist.h5  (no options, file does not exist)
+  ADD_H5_OUTPUT (h5fc_help h5fc_help.ddl 0 "" --help)
+  ADD_H5_OUTPUT (h5fc_nooption h5fc_nooption.ddl 1 "")
+  ADD_H5_OUTPUT (h5fc_nonexistfile h5fc_nonexistfile.ddl 1 "" nonexist.h5)
+#
+#
+# h5format_convert -d old_h5fc_ext_none.h5 (just -d option, file exists)
+# h5format_convert --dname old_h5fc_ext_none.h5 (just --dname option, file exists)
+# h5format_convert --dname (just --dname option)
+# h5format_convert --dname=nonexist old_h5fc_ext_none.h5 (dataset does not exist, file exists)
+  ADD_H5_OUTPUT (h5fc_d_file-d h5fc_d_file.ddl 1 old_h5fc_ext_none.h5 -d)
+  ADD_H5_OUTPUT (h5fc_d_file h5fc_d_file.ddl 1 old_h5fc_ext_none.h5 --dname)
+  ADD_H5_OUTPUT (h5fc_dname h5fc_dname.ddl 1 "" --dname)
+  ADD_H5_OUTPUT (h5fc_nonexistdset_file h5fc_nonexistdset_file.ddl 1 old_h5fc_ext_none.h5 --dname=nonexist)
+#
+#
+#
+# h5format_convert -d /DSET_CONTIGUOUS -v old_h5fc_ext_none.h5 (verbose, contiguous dataset)
+# h5format_convert -d /GROUP/DSET_BT2 --verbose old_h5fc_ext_none.h5 (verbose, bt1 dataset)
+# h5format_convert -d /DSET_NDATA_BT2 -v -n old_h5fc_ext_none.h5 (verbose, noop, bt1+nodata dataset)
+# h5format_convert -v old_h5fc_ext_none.h5 (verbose, all datasets)
+  ADD_H5_OUTPUT (h5fc_v_non_chunked h5fc_v_non_chunked.ddl 0 old_h5fc_ext_none.h5 -d /DSET_CONTIGUOUS -v)
+  ADD_H5_OUTPUT (h5fc_v_bt1 h5fc_v_bt1.ddl 0 old_h5fc_ext_none.h5 -d /GROUP/DSET_BT2 --verbose)
+  ADD_H5_OUTPUT (h5fc_v_ndata_bt1 h5fc_v_ndata_bt1.ddl 0 old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2 -v -n)
+  ADD_H5_OUTPUT (h5fc_v_all h5fc_v_all.ddl 0 old_h5fc_ext_none.h5 -v)
+#
+#
+#
+# h5format_convert -d /DSET_EA -v -n h5fc_ext_none.h5 (verbose, noop, one ea dataset)
+# h5format_convert -v -n h5fc_non_v3.h5 (verbose, noop, all datasets)
+  ADD_H5_OUTPUT (h5fc_v_n_1d h5fc_v_n_1d.ddl 0 h5fc_ext_none.h5 -d /DSET_EA -v -n)
+  ADD_H5_OUTPUT (h5fc_v_n_all h5fc_v_n_all.ddl 0 h5fc_non_v3.h5 -v -n)
+# No output from tests
+# 1) Use the tool to convert the dataset
+# 2) Verify the chunk indexing type is correct
+# h5format_convert -d /DSET_EA h5fc_ext_none.h5
+# h5format_convert -d /GROUP/DSET_NDATA_EA h5fc_ext_none.h5
+# h5format_convert -d /GROUP/DSET_BT2 h5fc_ext_none.h5
+# h5format_convert -d /DSET_NDATA_BT2 h5fc_ext_none.h5
+# h5format_convert -d /DSET_FA h5fc_ext_none.h5
+# h5format_convert -d /GROUP/DSET_FA h5fc_ext_none.h5
+# h5format_convert -d /DSET_NONE h5fc_ext_none.h5
+# h5format_convert -d /GROUP/DSET_NDATA_NONE h5fc_ext_none.h5
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_EA 0 h5fc_ext_none.h5 /DSET_EA)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_EA 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_EA)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_BT 0 h5fc_ext_none.h5 /GROUP/DSET_BT2)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_BT 0 h5fc_ext_none.h5 /DSET_NDATA_BT2)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_FA 0 h5fc_ext_none.h5 /DSET_FA)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_FA 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_FA)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_NONE 0 h5fc_ext_none.h5 /DSET_NONE)
+#
+  ADD_H5_TEST_CHECK_IDX (h5fc_ext_none_ND_NONE 0 h5fc_ext_none.h5 /GROUP/DSET_NDATA_NONE)
+#
+#
+#
+# No output from tests: just check exit code
+# h5format_convert -d /DSET_NDATA_BT2 old_h5fc_ext_none.h5 (v1-btree dataset)
+# h5format_convert -d /DSET_CONTIGUOUS h5fc_non_v3.h5 (non-chunked dataset)
+  ADD_H5_TEST (old_h5fc_ext_none 0 old_h5fc_ext_none.h5 -d /DSET_NDATA_BT2)
+  ADD_H5_TEST (old_h5fc_ext_none_CONT 0 h5fc_non_v3.h5 -d /DSET_CONTIGUOUS)
+#
+#
+#
+# No output from tests: just check exit code
+# h5format_convert -d /GROUP/DSET_BT2 -n h5fc_non_v3.h5 (noop, one dataset)
+# h5format_convert -n h5fc_non_v3.h5 (noop, all datasets)
+  ADD_H5_TEST (h5fc_non_v3_BT 0 h5fc_non_v3.h5 -d /GROUP/DSET_BT2 -n)
+  ADD_H5_TEST (h5fc_non_v3-n 0 h5fc_non_v3.h5 -n)
+#
+#
+#
+# No output from tests: just check exit code
+# h5format_convert h5fc_non_v3.h5
+# 1) convert all datasets
+# 2) verify indexing types
+  ADD_H5_TEST (h5fc_non_v3 0 h5fc_non_v3.h5)
+  ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-NEA /DSET_NDATA_EA)
+  ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-NBT /DSET_NDATA_BT2)
+  ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-BT /GROUP/DSET_BT2)
+  ADD_H5_CHECK_IDX (h5fc_non_v3 h5fc_non_v3-EA /GROUP/DSET_EA)
+#
+#
+#
+# No output from test: just check exit code
+# h5format_convert h5fc_edge_v3.h5
+# 1) convert the chunked dataset (filter, no-filter-edge-chunk)
+# 2) verify the indexing type
+  ADD_H5_TEST_CHECK_IDX (h5fc_edge_v3 0 h5fc_edge_v3.h5 /DSET_EDGE)
+#
+#
+
+# The following test files have messages in the superblock extension.
+# Verify h5dump output for correctness after conversion
+  ADD_H5_H5DUMP_CHECK (h5fc_ext1_i)
+  ADD_H5_H5DUMP_CHECK (h5fc_ext1_s)
+  ADD_H5_H5DUMP_CHECK (h5fc_ext1_f)
+#
+  ADD_H5_H5DUMP_CHECK (h5fc_ext2_if)
+  ADD_H5_H5DUMP_CHECK (h5fc_ext2_is)
+  ADD_H5_H5DUMP_CHECK (h5fc_ext2_sf)
+#
+  ADD_H5_H5DUMP_CHECK (h5fc_ext3_isf)
+#
+#
+#
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_i)
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_s)
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext1_f)
+#
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_if)
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_is)
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext2_sf)
+#
+  ADD_H5_H5DUMP_CHECK (old_h5fc_ext3_isf)
diff --git a/tools/h5format_convert/h5format_convert.c b/tools/h5format_convert/h5format_convert.c
index 105ac5d..75c3713 100644
--- a/tools/h5format_convert/h5format_convert.c
+++ b/tools/h5format_convert/h5format_convert.c
@@ -77,31 +77,31 @@ static struct long_options l_opts[] = {
  */
 static void usage(const char *prog) 
 {
-	printf("usage: %s [OPTIONS] file_name\n", prog);
-	printf("  OPTIONS\n");
-	printf("   -h, --help				Print a usage message and exit\n");
-	printf("   -V, --version			Print version number and exit\n");
-	printf("   -v, --verbose			Turn on verbose mode\n");
-	printf("   -d dname, --dname=dataset_name	Pathname for the dataset\n");
-	printf("   -n, --noop				Perform all the steps except the actual conversion\n");
-	printf("\n");
-	printf("Examples of use:\n");
-	printf("\n");
-	printf("h5format_convert -d /group/dataset file_name\n");
-	printf("  Convert the dataset </group/dataset> in the HDF5 file <file_name>:\n");
-	printf("    a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n");
-	printf("    b. compact/contiguous dataset: downgrade the layout version to 3\n");
-	printf("    c. virtual dataset: no action\n");
-	printf("\n");
-	printf("h5format_convert file_name\n");
-	printf("  Convert all datasets in the HDF5 file <file_name>:\n");
-	printf("    a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n");
-	printf("    b. compact/contiguous dataset: downgrade the layout version to 3\n");
-	printf("    c. virtual dataset: no action\n");
-	printf("\n");
-	printf("h5format_convert -n -d /group/dataset file_name\n");
-	printf("  Go through all the steps except the actual conversion when \n");
-	printf("  converting the dataset </group/dataset> in the HDF5 file <file_name>.\n");
+    printf("usage: %s [OPTIONS] file_name\n", prog);
+    printf("  OPTIONS\n");
+    printf("   -h, --help                Print a usage message and exit\n");
+    printf("   -V, --version             Print version number and exit\n");
+    printf("   -v, --verbose             Turn on verbose mode\n");
+    printf("   -d dname, --dname=dataset_name    Pathname for the dataset\n");
+    printf("   -n, --noop                Perform all the steps except the actual conversion\n");
+    printf("\n");
+    printf("Examples of use:\n");
+    printf("\n");
+    printf("h5format_convert -d /group/dataset file_name\n");
+    printf("  Convert the dataset </group/dataset> in the HDF5 file <file_name>:\n");
+    printf("    a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n");
+    printf("    b. compact/contiguous dataset: downgrade the layout version to 3\n");
+    printf("    c. virtual dataset: no action\n");
+    printf("\n");
+    printf("h5format_convert file_name\n");
+    printf("  Convert all datasets in the HDF5 file <file_name>:\n");
+    printf("    a. chunked dataset: convert the chunk indexing type to version 1 B-tree\n");
+    printf("    b. compact/contiguous dataset: downgrade the layout version to 3\n");
+    printf("    c. virtual dataset: no action\n");
+    printf("\n");
+    printf("h5format_convert -n -d /group/dataset file_name\n");
+    printf("  Go through all the steps except the actual conversion when \n");
+    printf("  converting the dataset </group/dataset> in the HDF5 file <file_name>.\n");
 } /* usage() */
 
 /*-------------------------------------------------------------------------
diff --git a/tools/h5format_convert/testfiles/h5fc_d_file.ddl b/tools/h5format_convert/testfiles/h5fc_d_file.ddl
index ad7a2f4..38fc432 100644
--- a/tools/h5format_convert/testfiles/h5fc_d_file.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_d_file.ddl
@@ -1,10 +1,10 @@
 usage: h5format_convert [OPTIONS] file_name
   OPTIONS
-   -h, --help				Print a usage message and exit
-   -V, --version			Print version number and exit
-   -v, --verbose			Turn on verbose mode
-   -d dname, --dname=dataset_name	Pathname for the dataset
-   -n, --noop				Perform all the steps except the actual conversion
+   -h, --help                Print a usage message and exit
+   -V, --version             Print version number and exit
+   -v, --verbose             Turn on verbose mode
+   -d dname, --dname=dataset_name    Pathname for the dataset
+   -n, --noop                Perform all the steps except the actual conversion
 
 Examples of use:
 
diff --git a/tools/h5format_convert/testfiles/h5fc_dname.ddl b/tools/h5format_convert/testfiles/h5fc_dname.ddl
index 0de42cb..48564b7 100644
--- a/tools/h5format_convert/testfiles/h5fc_dname.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_dname.ddl
@@ -1,10 +1,10 @@
 usage: h5format_convert [OPTIONS] file_name
   OPTIONS
-   -h, --help				Print a usage message and exit
-   -V, --version			Print version number and exit
-   -v, --verbose			Turn on verbose mode
-   -d dname, --dname=dataset_name	Pathname for the dataset
-   -n, --noop				Perform all the steps except the actual conversion
+   -h, --help                Print a usage message and exit
+   -V, --version             Print version number and exit
+   -v, --verbose             Turn on verbose mode
+   -d dname, --dname=dataset_name    Pathname for the dataset
+   -n, --noop                Perform all the steps except the actual conversion
 
 Examples of use:
 
diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext1_f.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext1_i.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext1_s.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext2_if.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext2_is.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext2_sf.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_ext3_isf.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/h5fc_help.ddl b/tools/h5format_convert/testfiles/h5fc_help.ddl
index aef8c63..bc0229c 100644
--- a/tools/h5format_convert/testfiles/h5fc_help.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_help.ddl
@@ -1,10 +1,10 @@
 usage: h5format_convert [OPTIONS] file_name
   OPTIONS
-   -h, --help				Print a usage message and exit
-   -V, --version			Print version number and exit
-   -v, --verbose			Turn on verbose mode
-   -d dname, --dname=dataset_name	Pathname for the dataset
-   -n, --noop				Perform all the steps except the actual conversion
+   -h, --help                Print a usage message and exit
+   -V, --version             Print version number and exit
+   -v, --verbose             Turn on verbose mode
+   -d dname, --dname=dataset_name    Pathname for the dataset
+   -n, --noop                Perform all the steps except the actual conversion
 
 Examples of use:
 
diff --git a/tools/h5format_convert/testfiles/h5fc_nooption.ddl b/tools/h5format_convert/testfiles/h5fc_nooption.ddl
index aef8c63..bc0229c 100644
--- a/tools/h5format_convert/testfiles/h5fc_nooption.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_nooption.ddl
@@ -1,10 +1,10 @@
 usage: h5format_convert [OPTIONS] file_name
   OPTIONS
-   -h, --help				Print a usage message and exit
-   -V, --version			Print version number and exit
-   -v, --verbose			Turn on verbose mode
-   -d dname, --dname=dataset_name	Pathname for the dataset
-   -n, --noop				Perform all the steps except the actual conversion
+   -h, --help                Print a usage message and exit
+   -V, --version             Print version number and exit
+   -v, --verbose             Turn on verbose mode
+   -d dname, --dname=dataset_name    Pathname for the dataset
+   -n, --noop                Perform all the steps except the actual conversion
 
 Examples of use:
 
diff --git a/tools/h5format_convert/testfiles/h5fc_v_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_all.ddl
index 5e7365d..a1af831 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_all.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_all.ddl
@@ -1,5 +1,5 @@
 Process command line options
-Open the file tmp.h5
+Open the file outtmp.h5
 Processing all datasets in the file...
 Going to process dataset:/DSET_CONTIGUOUS...
 Open the dataset
diff --git a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl
index c501eb0..31de12a 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_bt1.ddl
@@ -1,5 +1,5 @@
 Process command line options
-Open the file tmp.h5
+Open the file outtmp.h5
 Going to process dataset: /GROUP/DSET_BT2...
 Open the dataset
 Retrieve the dataset's layout
diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl
index ff5da4a..fcdadd8 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_n_1d.ddl
@@ -1,6 +1,6 @@
 Process command line options
 It is noop...
-Open the file tmp.h5
+Open the file outtmp.h5
 Going to process dataset: /DSET_EA...
 Open the dataset
 Retrieve the dataset's layout
diff --git a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl
index d2ffbbf..074ce6f 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_n_all.ddl
@@ -1,6 +1,6 @@
 Process command line options
 It is noop...
-Open the file tmp.h5
+Open the file outtmp.h5
 Processing all datasets in the file...
 Going to process dataset:/DSET_CONTIGUOUS...
 Open the dataset
diff --git a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl
index ba794a7..c75699a 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_ndata_bt1.ddl
@@ -1,6 +1,6 @@
 Process command line options
 It is noop...
-Open the file tmp.h5
+Open the file outtmp.h5
 Going to process dataset: /DSET_NDATA_BT2...
 Open the dataset
 Retrieve the dataset's layout
diff --git a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl
index aba0740..5945389 100644
--- a/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl
+++ b/tools/h5format_convert/testfiles/h5fc_v_non_chunked.ddl
@@ -1,5 +1,5 @@
 Process command line options
-Open the file tmp.h5
+Open the file outtmp.h5
 Going to process dataset: /DSET_CONTIGUOUS...
 Open the dataset
 Retrieve the dataset's layout
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_f.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl
index c906082..d1768c8 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_i.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 1
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext1_s.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_if.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_is.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl
index fb5192d..dae9284 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext2_sf.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl
index 2fff4ac..8ec4656 100644
--- a/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl
+++ b/tools/h5format_convert/testfiles/old_h5fc_ext3_isf.ddl
@@ -1,4 +1,4 @@
-HDF5 "./testfiles/tmp.h5" {
+HDF5 "./testfiles/dmptmp.h5" {
 SUPER_BLOCK {
    SUPERBLOCK_VERSION 2
    FREELIST_VERSION 0
diff --git a/tools/h5format_convert/testh5fc.sh.in b/tools/h5format_convert/testh5fc.sh.in
index f712434..15dba6d 100644
--- a/tools/h5format_convert/testh5fc.sh.in
+++ b/tools/h5format_convert/testh5fc.sh.in
@@ -69,7 +69,10 @@ TESTDIR=./testfiles
 test -d $TESTDIR || mkdir $TESTDIR
 
 # Copy the testfile to a temporary file for testing as h5format_convert is changing the file in place
+TMPOUTFILE=outtmp.h5
 TMPFILE=tmp.h5
+TMPCHKFILE=chktmp.h5
+TMPDMPFILE=dmptmp.h5
 
 ######################################################################
 # test files
@@ -168,7 +171,7 @@ CLEAN_TESTFILES_AND_TESTDIR()
     # skip rm if srcdir is same as destdir
     # this occurs when build/test performed in source dir and
     # make cp fail
-    SDIR=`$DIRNAME $tstfile`
+    SDIR=$SRC_H5FORMCONV_TESTFILES
     INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
     INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
     if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
@@ -211,11 +214,11 @@ TOOLTEST_OUT() {
     actual_err_sav=${actual_err}-sav
 
     # Prepare the test file
-    $RM $TESTDIR/$TMPFILE
+    $RM $TESTDIR/$TMPOUTFILE
     TFILE=$2
     if [ ! -z "$2" ] && [ -e $TESTDIR/$2 ] ; then
-	$CP $TESTDIR/$2 $TESTDIR/$TMPFILE
-	TFILE=$TMPFILE
+    $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE
+    TFILE=$TMPOUTFILE
     fi
 
     # Run test.
@@ -257,7 +260,37 @@ TOOLTEST() {
 	echo "    The tool exits failure"
 	nerrors="`expr $nerrors + 1`"
     else
-	echo " PASSED"
+    echo " PASSED"
+    fi
+}
+# Like TOOLTEST but tmpfile is for IDX_CHECK
+TOOLTEST_CHK() {
+    TESTING $FORMCONV $2 $3 $4 $1
+    $RM $TESTDIR/$TMPCHKFILE
+    $CP $TESTDIR/$1 $TESTDIR/$TMPCHKFILE
+    $RUNSERIAL $FORMCONV_BIN $2 $3 $4 $TESTDIR/$TMPCHKFILE
+    exitcode=$?
+    if [ $exitcode -ne 0 ]; then
+    echo "*FAILED*"
+    echo "    The tool exits failure"
+    nerrors="`expr $nerrors + 1`"
+    else
+    echo " PASSED"
+    fi
+}
+# Like TOOLTEST but tmpfile is for H5DUMP_CHECK
+TOOLTEST_DMP() {
+    TESTING $FORMCONV $2 $3 $4 $1
+    $RM $TESTDIR/$TMPDMPFILE
+    $CP $TESTDIR/$1 $TESTDIR/$TMPDMPFILE
+    $RUNSERIAL $FORMCONV_BIN $2 $3 $4 $TESTDIR/$TMPDMPFILE
+    exitcode=$?
+    if [ $exitcode -ne 0 ]; then
+    echo "*FAILED*"
+    echo "    The tool exits failure"
+    nerrors="`expr $nerrors + 1`"
+    else
+    echo " PASSED"
     fi
 }
 
@@ -270,7 +303,7 @@ CHECKING() {
 # $1 dataset name
 IDX_CHECK() {
     CHECKING $1
-    $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPFILE $1
+    $RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPCHKFILE $1
     ret=$?
     if [ $ret -eq 0 ]; then
 	echo " PASSED"
@@ -302,7 +335,7 @@ H5DUMP_CHECK() {
     expect="$TESTDIR/$2"
     actual="$TESTDIR/`basename $2 .ddl`.out"
     actual_err="$TESTDIR/`basename $2 .ddl`.err"
-    $RUNSERIAL $H5DUMP_BIN -BH $TESTDIR/$TMPFILE > $actual 2>$actual_err
+    $RUNSERIAL $H5DUMP_BIN -BH $TESTDIR/$TMPDMPFILE > $actual 2>$actual_err
     cat $actual_err >> $actual
 
     # Compare output
@@ -380,28 +413,28 @@ TOOLTEST_OUT h5fc_v_n_all.ddl h5fc_non_v3.h5 -v -n
 # h5format_convert -d /GROUP/DSET_FA h5fc_ext_none.h5
 # h5format_convert -d /DSET_NONE h5fc_ext_none.h5
 # h5format_convert -d /GROUP/DSET_NDATA_NONE h5fc_ext_none.h5
-TOOLTEST h5fc_ext_none.h5 -d /DSET_EA
+TOOLTEST_CHK h5fc_ext_none.h5 -d /DSET_EA
 IDX_CHECK /DSET_EA
 #
-TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_EA
+TOOLTEST_CHK h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_EA
 IDX_CHECK /GROUP/DSET_NDATA_EA
 #
-TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_BT2
+TOOLTEST_CHK h5fc_ext_none.h5 -d /GROUP/DSET_BT2
 IDX_CHECK /GROUP/DSET_BT2
 #
-TOOLTEST h5fc_ext_none.h5 -d /DSET_NDATA_BT2
+TOOLTEST_CHK h5fc_ext_none.h5 -d /DSET_NDATA_BT2
 IDX_CHECK /DSET_NDATA_BT2
 #
-TOOLTEST h5fc_ext_none.h5 -d /DSET_FA
+TOOLTEST_CHK h5fc_ext_none.h5 -d /DSET_FA
 IDX_CHECK /DSET_FA
 #
-TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_FA
+TOOLTEST_CHK h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_FA
 IDX_CHECK /GROUP/DSET_NDATA_FA
 #
-TOOLTEST h5fc_ext_none.h5 -d /DSET_NONE
+TOOLTEST_CHK h5fc_ext_none.h5 -d /DSET_NONE
 IDX_CHECK /DSET_NONE
 #
-TOOLTEST h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_NONE
+TOOLTEST_CHK h5fc_ext_none.h5 -d /GROUP/DSET_NDATA_NONE
 IDX_CHECK /GROUP/DSET_NDATA_NONE
 #
 #
@@ -426,7 +459,7 @@ TOOLTEST h5fc_non_v3.h5 -n
 # h5format_convert h5fc_non_v3.h5
 # 1) convert all datasets 
 # 2) verify indexing types
-TOOLTEST h5fc_non_v3.h5
+TOOLTEST_CHK h5fc_non_v3.h5
 IDX_CHECK /DSET_NDATA_EA
 IDX_CHECK /DSET_NDATA_BT2
 IDX_CHECK /GROUP/DSET_BT2
@@ -438,47 +471,47 @@ IDX_CHECK /GROUP/DSET_EA
 # h5format_convert h5fc_edge_v3.h5
 # 1) convert the chunked dataset (filter, no-filter-edge-chunk)
 # 2) verify the indexing type
-TOOLTEST h5fc_edge_v3.h5
+TOOLTEST_CHK h5fc_edge_v3.h5
 IDX_CHECK /DSET_EDGE
 #
 #
 
 # The following test files have messages in the superblock extension.
 # Verify h5dump output for correctness after conversion
-TOOLTEST h5fc_ext1_i.h5
+TOOLTEST_DMP h5fc_ext1_i.h5
 H5DUMP_CHECK h5fc_ext1_i.h5 h5fc_ext1_i.ddl
-TOOLTEST h5fc_ext1_s.h5
+TOOLTEST_DMP h5fc_ext1_s.h5
 H5DUMP_CHECK h5fc_ext1_s.h5 h5fc_ext1_s.ddl
-TOOLTEST h5fc_ext1_f.h5
+TOOLTEST_DMP h5fc_ext1_f.h5
 H5DUMP_CHECK h5fc_ext1_f.h5 h5fc_ext1_f.ddl
 #
-TOOLTEST h5fc_ext2_if.h5
+TOOLTEST_DMP h5fc_ext2_if.h5
 H5DUMP_CHECK h5fc_ext2_if.h5 h5fc_ext2_if.ddl
-TOOLTEST h5fc_ext2_is.h5
+TOOLTEST_DMP h5fc_ext2_is.h5
 H5DUMP_CHECK h5fc_ext2_is.h5 h5fc_ext2_is.ddl
-TOOLTEST h5fc_ext2_sf.h5
+TOOLTEST_DMP h5fc_ext2_sf.h5
 H5DUMP_CHECK h5fc_ext2_sf.h5 h5fc_ext2_sf.ddl
 #
-TOOLTEST h5fc_ext3_isf.h5
+TOOLTEST_DMP h5fc_ext3_isf.h5
 H5DUMP_CHECK h5fc_ext3_isf.h5 h5fc_ext3_isf.ddl
 #
 #
 #
-TOOLTEST old_h5fc_ext1_i.h5
+TOOLTEST_DMP old_h5fc_ext1_i.h5
 H5DUMP_CHECK old_h5fc_ext1_i.h5 old_h5fc_ext1_i.ddl
-TOOLTEST old_h5fc_ext1_s.h5
+TOOLTEST_DMP old_h5fc_ext1_s.h5
 H5DUMP_CHECK old_h5fc_ext1_s.h5 old_h5fc_ext1_s.ddl
-TOOLTEST old_h5fc_ext1_f.h5
+TOOLTEST_DMP old_h5fc_ext1_f.h5
 H5DUMP_CHECK old_h5fc_ext1_f.h5 old_h5fc_ext1_f.ddl
 #
-TOOLTEST old_h5fc_ext2_if.h5
+TOOLTEST_DMP old_h5fc_ext2_if.h5
 H5DUMP_CHECK old_h5fc_ext2_if.h5 old_h5fc_ext2_if.ddl
-TOOLTEST old_h5fc_ext2_is.h5
+TOOLTEST_DMP old_h5fc_ext2_is.h5
 H5DUMP_CHECK old_h5fc_ext2_is.h5 old_h5fc_ext2_is.ddl
-TOOLTEST old_h5fc_ext2_sf.h5
+TOOLTEST_DMP old_h5fc_ext2_sf.h5
 H5DUMP_CHECK old_h5fc_ext2_sf.h5 old_h5fc_ext2_sf.ddl
 #
-TOOLTEST old_h5fc_ext3_isf.h5
+TOOLTEST_DMP old_h5fc_ext3_isf.h5
 H5DUMP_CHECK old_h5fc_ext3_isf.h5 old_h5fc_ext3_isf.ddl
 #
 # Clean up temporary files/directories
diff --git a/tools/h5import/h5importtestutil.sh.in b/tools/h5import/h5importtestutil.sh.in
index e50ddac..f2694a0 100644
--- a/tools/h5import/h5importtestutil.sh.in
+++ b/tools/h5import/h5importtestutil.sh.in
@@ -13,8 +13,7 @@
 # http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
 # access to either file, you may request a copy from help at hdfgroup.org.
 #
-# HDF Utilities Test script
-# Usage: h5importtestutil.sh [machine-type]
+# Tests for the  h5import tool
 
 srcdir=@srcdir@
 
@@ -25,6 +24,15 @@ TESTNAME=h5import
 EXIT_SUCCESS=0
 EXIT_FAILURE=1
 
+DUMPER=../h5dump/h5dump                     # The tool name
+DUMPER_BIN=`pwd`/$DUMPER          # The path of the tool binary
+
+H5DIFF=../h5diff/h5diff           # The h5diff tool name
+H5DIFF_BIN=`pwd`/$H5DIFF          # The path of the h5diff  tool binary
+
+H5IMPORT=h5import     # The h5import tool name
+H5IMPORT_BIN=`pwd`/$H5IMPORT      # The path of the h5import  tool binary
+
 RM='rm -rf'
 CP='cp'
 DIRNAME='dirname'
@@ -161,6 +169,9 @@ CLEAN_TESTFILES_AND_TESTDIR()
     fi
 }
 
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+#
 TESTING() {
    SPACES="                                                               "
    echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
@@ -175,11 +186,11 @@ SKIP() {
 TOOLTEST()
 {
 err=0
-$RUNSERIAL ./h5import $*
-$RUNSERIAL ../h5dump/h5dump $5 >log2
+$RUNSERIAL $H5IMPORT_BIN $*
+$RUNSERIAL $DUMPER_BIN $5 >log2
 
 cd tmp_testfiles
-$RUNSERIAL ../../h5dump/h5dump $5 >log1
+$RUNSERIAL $DUMPER_BIN $5 >log1
 cd ..
 
 cmp -s tmp_testfiles/log1 log2 || err=1
@@ -197,9 +208,9 @@ fi
 TOOLTEST2()
 {
 err=0
-$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -b tmp_testfiles/$2 > d$2.dmp
-$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
-$RUNSERIAL ../h5diff/h5diff -v d$2 tmp_testfiles/$2 $1 $1 > log2
+$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -b tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL $H5DIFF_BIN -v d$2 tmp_testfiles/$2 $1 $1 > log2
 $CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
 
 cmp -s log1 log2 || err=1
@@ -218,9 +229,9 @@ fi
 TOOLTEST3()
 {
 err=0
-$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
-$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
-$RUNSERIAL ../h5diff/h5diff -v d$2 tmp_testfiles/$2 $1 $1 > log2
+$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL $H5DIFF_BIN -v d$2 tmp_testfiles/$2 $1 $1 > log2
 $CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
 
 cmp -s log1 log2 || err=1
@@ -239,9 +250,9 @@ fi
 TOOLTEST4()
 {
 err=0
-$RUNSERIAL ../h5dump/h5dump -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
-$RUNSERIAL ./h5import d$2.bin -c d$2.dmp -o d$2 > d$2.imp
-$RUNSERIAL ../h5diff/h5diff -r d$2 tmp_testfiles/$2 $1 $1 > log2
+$RUNSERIAL $DUMPER_BIN -p -d $1 -o d$2.bin -y --width=1 tmp_testfiles/$2 > d$2.dmp
+$RUNSERIAL $H5IMPORT_BIN d$2.bin -c d$2.dmp -o d$2 > d$2.imp
+$RUNSERIAL $H5DIFF_BIN -r d$2 tmp_testfiles/$2 $1 $1 > log2
 $CP -f $SRC_H5IMPORT_TESTFILES/d$2.txt log1
 
 
@@ -260,7 +271,6 @@ echo "=============================="
 echo "H5IMPORT tests started"
 echo "=============================="
 
-if [ -f h5import -a -f h5importtest ]; then
 #echo "** Testing h5import  ***"
 
 rm -f  output.h5 log1 tx* b* *.dat
@@ -359,10 +369,6 @@ TOOLTEST $TESTDIR/textpfe64.txt -c $TESTDIR/textpfe.conf -o textpfe.h5
 
 rm -f  txtin32.txt txtin16.txt txtin8.txt txtuin32.txt txtuin16.txt *.bin *.dmp *.imp *.h5
 rm -rf tmp_testfiles
-else
-  echo "** h5import or h5importtest not available ***"
-  nerrors="` expr $nerrors + 1 `";
-fi
 
 # Clean up temporary files/directories
 CLEAN_TESTFILES_AND_TESTDIR
diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake
index a42fa17..2e3d398 100644
--- a/tools/h5ls/CMakeTests.cmake
+++ b/tools/h5ls/CMakeTests.cmake
@@ -31,6 +31,7 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink.h5
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.h5
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset_idx.h5
   )
 
   set (LIST_OTHER_TEST_FILES
@@ -90,13 +91,14 @@
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.ls
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2le.ls
       ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2be.ls
+      ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset_idx.ls
   )
 
   file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
 
   # copy the list of test files
   foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${listfiles}" NAME)
+    get_filename_component(fname "${listfiles}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
     #message (STATUS " Copying ${listfiles} to ${dest}")
     add_custom_command (
@@ -400,3 +402,8 @@
   else (H5_WORDS_BIGENDIAN)
     ADD_H5_TEST (tdataregle 0 -v tdatareg.h5)
   endif (H5_WORDS_BIGENDIAN)
+
+# test for file with datasets that use Fixed Array chunk indices
+#echo "***skip testing tdset_idx.h5"
+#ADD_H5_TEST (tdset_idx 0 -w80 -d tdset_idx.h5)
+  
\ No newline at end of file
diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake
index 1ef3f20..3e85803 100644
--- a/tools/h5ls/CMakeTestsVDS.cmake
+++ b/tools/h5ls/CMakeTestsVDS.cmake
@@ -47,7 +47,7 @@
 
   # copy the list of test files
   foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${listfiles}" NAME)
+    get_filename_component(fname "${listfiles}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}")
     #message (STATUS " Copying ${listfiles} to ${dest}")
     add_custom_command (
diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake
index 8aee98f..c836fd4 100644
--- a/tools/h5repack/CMakeTests.cmake
+++ b/tools/h5repack/CMakeTests.cmake
@@ -57,6 +57,8 @@
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum.h5
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum_deflated.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5
@@ -115,10 +117,15 @@
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl
       ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa-v.ddl
+      ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti-v.ddl
   )
 
   foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES})
-    GET_FILENAME_COMPONENT(fname "${h5_file}" NAME)
+    get_filename_component(fname "${h5_file}" NAME)
     set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}")
     #message (STATUS " Copying ${h5_file}")
     add_custom_command (
@@ -345,6 +352,41 @@
     endif ("${testtype}" STREQUAL "SKIP")
   ENDMACRO (ADD_H5_VERIFY_TEST)
 
+  MACRO (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilter)
+    if ("${testtype}" STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
+            NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}-SKIPPED
+            COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}"
+        )
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    else ("${testtype}" STREQUAL "SKIP")
+      if (NOT HDF5_ENABLE_USING_MEMCHECKER)
+        add_test (
+            NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}
+            COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}
+        )
+        set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+        if (NOT "${last_test}" STREQUAL "")
+          set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES DEPENDS ${last_test})
+        endif (NOT "${last_test}" STREQUAL "")
+        add_test (
+            NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP
+            COMMAND "${CMAKE_COMMAND}"
+                -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+                -D "TEST_ARGS:STRING=-d;${testdset};-p;out-${testname}.${testfile}"
+                -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles"
+                -D "TEST_OUTPUT=${testfile}-${testname}-v.out"
+                -D "TEST_EXPECT=${resultcode}"
+                -D "TEST_REFERENCE=${testfile}-${testname}-v.ddl"
+                -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
+        )
+        set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
+        set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname})
+      endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
+    endif ("${testtype}" STREQUAL "SKIP")
+  ENDMACRO (ADD_H5_VERIFY_VDS)
+
   MACRO (ADD_H5_TEST_META testname testfile)
       add_test (
           NAME H5REPACK_META-${testname}_N
@@ -585,36 +627,21 @@
          ./testfiles/out-meta_short_N.meta_short.h5
          ./testfiles/out-meta_long_M.meta_long.h5
          ./testfiles/out-meta_long_N.meta_long.h5
-         ./testfiles/1_vds.h5-vds_dset_compa-v.out
-         ./testfiles/1_vds.h5-vds_dset_compa-v.out.err
-         ./testfiles/1_vds.h5-vds_dset_conti-v.out
-         ./testfiles/1_vds.h5-vds_dset_conti-v.out.err
-         ./testfiles/2_vds.h5-vds_null_compa-v.out
-         ./testfiles/2_vds.h5-vds_null_compa-v.out.err
-         ./testfiles/2_vds.h5-vds_null_conti-v.out
-         ./testfiles/2_vds.h5-vds_null_conti-v.out.err
+         ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out
+         ./testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.out.err
+         ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out
+         ./testfiles/2_vds.h5-vds_chunk3x6x9-v.out.err
+         ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out
+         ./testfiles/3_1_vds.h5-vds_chunk2x5x8-v.out.err
          ./testfiles/4_vds.h5-vds_compa-v.out
          ./testfiles/4_vds.h5-vds_compa-v.out.err
-         ./testfiles/4_vds.h5-vds_compa_compa-v.out
-         ./testfiles/4_vds.h5-vds_compa_compa-v.out.err
-         ./testfiles/4_vds.h5-vds_compa_conti-v.out
-         ./testfiles/4_vds.h5-vds_compa_conti-v.out.err
          ./testfiles/4_vds.h5-vds_conti-v.out
          ./testfiles/4_vds.h5-vds_conti-v.out.err
-         ./testfiles/4_vds.h5-vds_conti_compa-v.out
-         ./testfiles/4_vds.h5-vds_conti_compa-v.out.err
-         ./testfiles/4_vds.h5-vds_conti_conti-v.out
-         ./testfiles/4_vds.h5-vds_conti_conti-v.out.err
          ./testfiles/out-vds_compa.4_vds.h5
-         ./testfiles/out-vds_compa_compa.4_vds.h5
-         ./testfiles/out-vds_compa_conti.4_vds.h5
          ./testfiles/out-vds_conti.4_vds.h5
-         ./testfiles/out-vds_conti_compa.4_vds.h5
-         ./testfiles/out-vds_conti_conti.4_vds.h5
-         ./testfiles/out-vds_dset_compa.1_vds.h5
-         ./testfiles/out-vds_dset_conti.1_vds.h5
-         ./testfiles/out-vds_null_compa.2_vds.h5
-         ./testfiles/out-vds_null_conti.2_vds.h5
+         ./testfiles/out-vds_chunk2x5x8.3_1_vds.h5
+         ./testfiles/out-vds_chunk3x6x9.2_vds.h5
+         ./testfiles/out-vds_dset_chunk20x10x5.1_vds.h5
          h5repack_attr.h5
          h5repack_attr_out.h5
          h5repack_attr_refs.h5
@@ -716,6 +743,13 @@
   ADD_H5_TEST (layout "TEST" ${FILE4})
   ADD_H5_TEST (early "TEST" ${FILE5})
 
+# nested 8bit enum in both deflated and non-deflated datafiles
+  if (NOT USE_FILTER_DEFLATE)
+  ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum.h5)
+  else (NOT USE_FILTER_DEFLATE)
+  ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum_deflated.h5)
+  endif (NOT USE_FILTER_DEFLATE)
+
 # use $FILE4 to write some filters  (this file has  no filters)
 
 # gzip with individual object
@@ -1050,23 +1084,38 @@
 
 # VDS tests
 
-#########################################################
-# layout options
-#########################################################
-  ADD_H5_VERIFY_TEST (vds_dset_conti "TEST" 0 ${FILEV1} vds_dset CONTIGUOUS -l vds_dset:CONTI)
-  ADD_H5_VERIFY_TEST (vds_null_conti "TEST" 1 ${FILEV2} null CONTIGUOUS -l CONTI)
-  ADD_H5_VERIFY_TEST (vds_dset_compa "TEST" 0 ${FILEV1} vds_dset COMPACT -l vds_dset:COMPA)
-  ADD_H5_VERIFY_TEST (vds_null_compa "TEST" 1 ${FILEV2} null COMPACT -l COMPA)
-
 ################################################################
 # layout conversions
 ###############################################################
-  ADD_H5_VERIFY_TEST (vds_compa_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI)
-  ADD_H5_VERIFY_TEST (vds_compa_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA)
-  ADD_H5_VERIFY_TEST (vds_conti_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA)
-  ADD_H5_VERIFY_TEST (vds_conti_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI)
-  ADD_H5_VERIFY_TEST (vds_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA)
-  ADD_H5_VERIFY_TEST (vds_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI)
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
+  ADD_H5_VERIFY_VDS (vds_dset_chunk20x10x5 ${TESTTYPE} 0 ${FILEV1} vds_dset CHUNKED -l vds_dset:CHUNK=20x10x5)
+
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
+  ADD_H5_VERIFY_VDS (vds_chunk2x5x8 ${TESTTYPE} 0 ${FILEV3_1} vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8)
+
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
+  ADD_H5_VERIFY_VDS (vds_chunk3x6x9 ${TESTTYPE} 0 ${FILEV2} vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9)
+
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
+  ADD_H5_VERIFY_VDS (vds_compa ${TESTTYPE} 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA)
+
+  set (TESTTYPE "TEST")
+  if (NOT USE_FILTER_DEFLATE)
+    set (TESTTYPE "SKIP")
+  endif (NOT USE_FILTER_DEFLATE)
+  ADD_H5_VERIFY_VDS (vds_conti ${TESTTYPE} 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI)
 
 ##############################################################################
 ###    P L U G I N  T E S T S
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index 24298d0..5ff0f50 100644
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -39,6 +39,8 @@ H5DUMP=../h5dump/h5dump         # The h5dump tool name
 H5DUMP_BIN=`pwd`/$H5DUMP        # The path of the h5dump tool binary
 
 RM='rm -rf'
+CMP='cmp'
+DIFF='diff -c'
 GREP='grep'
 CP='cp'
 DIRNAME='dirname'
@@ -148,6 +150,11 @@ $SRC_H5REPACK_TESTFILES/h5repack_layout.h5.ddl
 $SRC_H5REPACK_TESTFILES/h5repack_filters.h5.tst
 $SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl
 $SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst
+$SRC_H5REPACK_TESTFILES/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
+$SRC_H5REPACK_TESTFILES/2_vds.h5-vds_chunk3x6x9-v.ddl
+$SRC_H5REPACK_TESTFILES/3_1_vds.h5-vds_chunk2x5x8-v.ddl
+$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa-v.ddl
+$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti-v.ddl
 "
 
 #
@@ -188,7 +195,7 @@ CLEAN_TESTFILES_AND_TESTDIR()
     # skip rm if srcdir is same as destdir
     # this occurs when build/test performed in source dir and
     # make cp fail
-    SDIR=`$DIRNAME $tstfile`
+    SDIR=$SRC_H5REPACK_TESTFILES
     INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
     INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
     if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
@@ -321,6 +328,70 @@ VERIFY_LAYOUT_DSET()
     rm -f $layoutfile
 }
 
+#------------------------------------------
+# Verifying layouts of a dataset
+VERIFY_LAYOUT_VDS()
+{
+    layoutfile=layout-$1.$2
+    dset=$3
+    expectlayout=$4
+    infile=$2
+    outfile=out-$1.$2
+
+    expect="$TESTDIR/$2-$1-v.ddl"
+    actual="$TESTDIR/$2-$1-v.out"
+    actual_err="$TESTDIR/$2-$1-v.err"
+
+    shift
+    shift
+    shift
+    shift
+
+    TESTING  $H5REPACK $@
+    (
+        cd $TESTDIR
+        $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile
+    )
+    RET=$?
+    if [ $RET != 0 ] ; then
+        echo "*FAILED*"
+        nerrors="`expr $nerrors + 1`"
+    else
+        echo " PASSED"
+    fi
+
+    #---------------------------------
+    # check the layout from a dataset
+    VERIFY  "a dataset layout"
+    (
+        cd $TESTDIR
+        $RUNSERIAL $H5DUMP_BIN -d $dset -p $outfile
+    ) >$actual 2>$actual_err
+
+    cat $actual_err >> $actual
+
+    if [ ! -f $expect ]; then
+    # Create the expect file if it doesn't yet exist.
+     echo " CREATED"
+     cp $actual $expect
+    elif $CMP $expect $actual > /dev/null 2>&1 ; then
+     echo " PASSED"
+    else
+     echo "*FAILED*"
+     echo "    Expected result (*.ddl) differs from actual result (*.out)"
+     nerrors="`expr $nerrors + 1`"
+     test yes = "$verbose" && $DIFF $caseless $expect $actual |sed 's/^/    /'
+    fi
+
+    # Clean up output file
+    if test -z "$HDF5_NOCLEANUP"; then
+     rm -f $actual $actual_err
+    fi
+
+    # clean up tmp files
+    rm -f $outfile
+}
+
 #----------------------------------------
 # Verifying layouts from entire file
 VERIFY_LAYOUT_ALL()
@@ -1057,7 +1128,7 @@ TOOLTEST add_alignment $arg
 
 # Check repacking file with old version of layout message (should get upgraded
 #       to new version and be readable, etc.)
-TOOLTEST pgrade_layout h5repack_layouto.h5
+TOOLTEST upgrade_layout h5repack_layouto.h5
 
 # test for datum size > H5TOOLS_MALLOCSIZE
 TOOLTEST gt_mallocsize h5repack_objs.h5 -f GZIP=1
@@ -1088,23 +1159,38 @@ TOOLTEST_META meta_long h5repack_layout.h5 --metadata_block_size=8192
 
 # VDS tests
 
-#########################################################
-# layout options
-#########################################################
-VERIFY_LAYOUT_DSET vds_dset_conti 1_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
-VERIFY_LAYOUT_ALL vds_null_conti 2_vds.h5 CONTIGUOUS -l CONTI
-VERIFY_LAYOUT_DSET vds_dset_compa 1_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
-VERIFY_LAYOUT_ALL vds_null_compa 2_vds.h5 COMPACT -l COMPA
-
 ################################################################
 # layout conversions
 ###############################################################
-VERIFY_LAYOUT_DSET vds_compa_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
-VERIFY_LAYOUT_DSET vds_compa_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
-VERIFY_LAYOUT_DSET vds_conti_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
-VERIFY_LAYOUT_DSET vds_conti_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
-VERIFY_LAYOUT_DSET vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
-VERIFY_LAYOUT_DSET vds_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP vds_dset_chunk_20x10x5
+else
+ VERIFY_LAYOUT_VDS vds_dset_chunk_20x10x5 1_vds.h5 vds_dset CHUNKED --layout vds_dset:CHUNK=20x10x5
+fi
+
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP vds_chunk2x5x8
+else
+ VERIFY_LAYOUT_VDS vds_chunk2x5x8 3_1_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8
+fi
+
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP vds_chunk3x6x9
+else
+ VERIFY_LAYOUT_VDS vds_chunk3x6x9 2_vds.h5 vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9
+fi
+
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP vds_compa 4_vds.h5
+else
+ VERIFY_LAYOUT_VDS vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA
+fi
+
+if test  $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP vds_conti 4_vds.h5
+else
+ VERIFY_LAYOUT_VDS vds_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI
+fi
 
 # Clean up temporary files/directories
 CLEAN_TESTFILES_AND_TESTDIR
diff --git a/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl b/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
new file mode 100644
index 0000000..fab9494
--- /dev/null
+++ b/tools/h5repack/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v.ddl
@@ -0,0 +1,112 @@
+HDF5 "out-vds_dset_chunk20x10x5.1_vds.h5" {
+DATASET "vds_dset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 5, 18, 8 ) / ( H5S_UNLIMITED, 18, 8 ) }
+   STORAGE_LAYOUT {
+      CHUNKED ( 20, 10, 5 )
+      SIZE 16000
+   }
+   FILTERS {
+      NONE
+   }
+   FILLVALUE {
+      FILL_TIME H5D_FILL_TIME_IFSET
+      VALUE  -9
+   }
+   ALLOCATION_TIME {
+      H5D_ALLOC_TIME_INCR
+   }
+   DATA {
+   (0,0,0): 10, 10, 10, 10, 10, 10, 10, 10,
+   (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10,
+   (0,2,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,3,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,6,0): 30, 30, 30, 30, 30, 30, 30, 30,
+   (0,7,0): 30, 30, 30, 30, 30, 30, 30, 30,
+   (0,8,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,9,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,10,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,11,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,12,0): 50, 50, 50, 50, 50, 50, 50, 50,
+   (0,13,0): 50, 50, 50, 50, 50, 50, 50, 50,
+   (0,14,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,15,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,16,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,17,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (1,0,0): 11, 11, 11, 11, 11, 11, 11, 11,
+   (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11,
+   (1,2,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,3,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,6,0): 31, 31, 31, 31, 31, 31, 31, 31,
+   (1,7,0): 31, 31, 31, 31, 31, 31, 31, 31,
+   (1,8,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,9,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,10,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,11,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,12,0): 51, 51, 51, 51, 51, 51, 51, 51,
+   (1,13,0): 51, 51, 51, 51, 51, 51, 51, 51,
+   (1,14,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,15,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,16,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,17,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (2,0,0): 12, 12, 12, 12, 12, 12, 12, 12,
+   (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12,
+   (2,2,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,3,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,6,0): 32, 32, 32, 32, 32, 32, 32, 32,
+   (2,7,0): 32, 32, 32, 32, 32, 32, 32, 32,
+   (2,8,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,9,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,10,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,11,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,12,0): 52, 52, 52, 52, 52, 52, 52, 52,
+   (2,13,0): 52, 52, 52, 52, 52, 52, 52, 52,
+   (2,14,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,15,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,16,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,17,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (3,0,0): 13, 13, 13, 13, 13, 13, 13, 13,
+   (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13,
+   (3,2,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,3,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,6,0): 33, 33, 33, 33, 33, 33, 33, 33,
+   (3,7,0): 33, 33, 33, 33, 33, 33, 33, 33,
+   (3,8,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,9,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,10,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,11,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,12,0): 53, 53, 53, 53, 53, 53, 53, 53,
+   (3,13,0): 53, 53, 53, 53, 53, 53, 53, 53,
+   (3,14,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,15,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,16,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,17,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (4,0,0): 14, 14, 14, 14, 14, 14, 14, 14,
+   (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14,
+   (4,2,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,3,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,6,0): 34, 34, 34, 34, 34, 34, 34, 34,
+   (4,7,0): 34, 34, 34, 34, 34, 34, 34, 34,
+   (4,8,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,9,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,10,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,11,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,12,0): 54, 54, 54, 54, 54, 54, 54, 54,
+   (4,13,0): 54, 54, 54, 54, 54, 54, 54, 54,
+   (4,14,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,15,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,16,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,17,0): 64, 64, 64, 64, 64, 64, 64, 64
+   }
+}
+}
diff --git a/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl b/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
new file mode 100644
index 0000000..51df9dd
--- /dev/null
+++ b/tools/h5repack/testfiles/2_vds.h5-vds_chunk3x6x9-v.ddl
@@ -0,0 +1,70 @@
+HDF5 "out-vds_chunk3x6x9.2_vds.h5" {
+DATASET "vds_dset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 6, 8, 14 ) / ( H5S_UNLIMITED, 8, 14 ) }
+   STORAGE_LAYOUT {
+      CHUNKED ( 3, 6, 9 )
+      SIZE 5184
+   }
+   FILTERS {
+      NONE
+   }
+   FILLVALUE {
+      FILL_TIME H5D_FILL_TIME_IFSET
+      VALUE  -9
+   }
+   ALLOCATION_TIME {
+      H5D_ALLOC_TIME_INCR
+   }
+   DATA {
+   (0,0,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40,
+   (0,1,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40,
+   (0,2,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
+   (0,3,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
+   (0,4,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40,
+   (0,5,0): 20, 20, 20, 20, 20, 20, 20, 50, 50, 50, 50, 50, 50, 50,
+   (0,6,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50,
+   (0,7,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50,
+   (1,0,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41,
+   (1,1,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41,
+   (1,2,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
+   (1,3,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
+   (1,4,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41,
+   (1,5,0): 21, 21, 21, 21, 21, 21, 21, 51, 51, 51, 51, 51, 51, 51,
+   (1,6,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51,
+   (1,7,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51,
+   (2,0,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42,
+   (2,1,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42,
+   (2,2,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
+   (2,3,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
+   (2,4,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42,
+   (2,5,0): 22, 22, 22, 22, 22, 22, 22, 52, 52, 52, 52, 52, 52, 52,
+   (2,6,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52,
+   (2,7,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52,
+   (3,0,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43,
+   (3,1,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43,
+   (3,2,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
+   (3,3,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
+   (3,4,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43,
+   (3,5,0): 23, 23, 23, 23, 23, 23, 23, 53, 53, 53, 53, 53, 53, 53,
+   (3,6,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53,
+   (3,7,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53,
+   (4,0,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44,
+   (4,1,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44,
+   (4,2,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
+   (4,3,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
+   (4,4,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44,
+   (4,5,0): 24, 24, 24, 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54,
+   (4,6,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54,
+   (4,7,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54,
+   (5,0,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45,
+   (5,1,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45,
+   (5,2,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
+   (5,3,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
+   (5,4,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45,
+   (5,5,0): 25, 25, 25, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55, 55,
+   (5,6,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55,
+   (5,7,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55
+   }
+}
+}
diff --git a/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl b/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
new file mode 100644
index 0000000..dcd172c
--- /dev/null
+++ b/tools/h5repack/testfiles/3_1_vds.h5-vds_chunk2x5x8-v.ddl
@@ -0,0 +1,147 @@
+HDF5 "out-vds_chunk2x5x8.3_1_vds.h5" {
+DATASET "vds_dset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 5, 25, 8 ) / ( H5S_UNLIMITED, 25, 8 ) }
+   STORAGE_LAYOUT {
+      CHUNKED ( 2, 5, 8 )
+      SIZE 4800
+   }
+   FILTERS {
+      NONE
+   }
+   FILLVALUE {
+      FILL_TIME H5D_FILL_TIME_IFSET
+      VALUE  -9
+   }
+   ALLOCATION_TIME {
+      H5D_ALLOC_TIME_INCR
+   }
+   DATA {
+   (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10,
+   (0,2,0): 10, 10, 10, 10, 10, 10, 10, 10,
+   (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,6,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,7,0): 20, 20, 20, 20, 20, 20, 20, 20,
+   (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,9,0): 30, 30, 30, 30, 30, 30, 30, 30,
+   (0,10,0): 30, 30, 30, 30, 30, 30, 30, 30,
+   (0,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,12,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,13,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,14,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,15,0): 40, 40, 40, 40, 40, 40, 40, 40,
+   (0,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,17,0): 50, 50, 50, 50, 50, 50, 50, 50,
+   (0,18,0): 50, 50, 50, 50, 50, 50, 50, 50,
+   (0,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (0,20,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,21,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,22,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,23,0): 60, 60, 60, 60, 60, 60, 60, 60,
+   (0,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11,
+   (1,2,0): 11, 11, 11, 11, 11, 11, 11, 11,
+   (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,6,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,7,0): 21, 21, 21, 21, 21, 21, 21, 21,
+   (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,9,0): 31, 31, 31, 31, 31, 31, 31, 31,
+   (1,10,0): 31, 31, 31, 31, 31, 31, 31, 31,
+   (1,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,12,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,13,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,14,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,15,0): 41, 41, 41, 41, 41, 41, 41, 41,
+   (1,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,17,0): 51, 51, 51, 51, 51, 51, 51, 51,
+   (1,18,0): 51, 51, 51, 51, 51, 51, 51, 51,
+   (1,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (1,20,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,21,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,22,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,23,0): 61, 61, 61, 61, 61, 61, 61, 61,
+   (1,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12,
+   (2,2,0): 12, 12, 12, 12, 12, 12, 12, 12,
+   (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,6,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,7,0): 22, 22, 22, 22, 22, 22, 22, 22,
+   (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,9,0): 32, 32, 32, 32, 32, 32, 32, 32,
+   (2,10,0): 32, 32, 32, 32, 32, 32, 32, 32,
+   (2,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,12,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,13,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,14,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,15,0): 42, 42, 42, 42, 42, 42, 42, 42,
+   (2,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,17,0): 52, 52, 52, 52, 52, 52, 52, 52,
+   (2,18,0): 52, 52, 52, 52, 52, 52, 52, 52,
+   (2,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (2,20,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,21,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,22,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,23,0): 62, 62, 62, 62, 62, 62, 62, 62,
+   (2,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13,
+   (3,2,0): 13, 13, 13, 13, 13, 13, 13, 13,
+   (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,6,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,7,0): 23, 23, 23, 23, 23, 23, 23, 23,
+   (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,9,0): 33, 33, 33, 33, 33, 33, 33, 33,
+   (3,10,0): 33, 33, 33, 33, 33, 33, 33, 33,
+   (3,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,12,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,13,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,14,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,15,0): 43, 43, 43, 43, 43, 43, 43, 43,
+   (3,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,17,0): 53, 53, 53, 53, 53, 53, 53, 53,
+   (3,18,0): 53, 53, 53, 53, 53, 53, 53, 53,
+   (3,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (3,20,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,21,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,22,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,23,0): 63, 63, 63, 63, 63, 63, 63, 63,
+   (3,24,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14,
+   (4,2,0): 14, 14, 14, 14, 14, 14, 14, 14,
+   (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,6,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,7,0): 24, 24, 24, 24, 24, 24, 24, 24,
+   (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,9,0): 34, 34, 34, 34, 34, 34, 34, 34,
+   (4,10,0): 34, 34, 34, 34, 34, 34, 34, 34,
+   (4,11,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,12,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,13,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,14,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,15,0): 44, 44, 44, 44, 44, 44, 44, 44,
+   (4,16,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,17,0): 54, 54, 54, 54, 54, 54, 54, 54,
+   (4,18,0): 54, 54, 54, 54, 54, 54, 54, 54,
+   (4,19,0): -9, -9, -9, -9, -9, -9, -9, -9,
+   (4,20,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,21,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,22,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,23,0): 64, 64, 64, 64, 64, 64, 64, 64,
+   (4,24,0): -9, -9, -9, -9, -9, -9, -9, -9
+   }
+}
+}
diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
new file mode 100644
index 0000000..1e8927c
--- /dev/null
+++ b/tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
@@ -0,0 +1,58 @@
+HDF5 "out-vds_compa.4_vds.h5" {
+DATASET "vds_dset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) }
+   STORAGE_LAYOUT {
+      COMPACT
+      SIZE 576
+   }
+   FILTERS {
+      NONE
+   }
+   FILLVALUE {
+      FILL_TIME H5D_FILL_TIME_IFSET
+      VALUE  -9
+   }
+   ALLOCATION_TIME {
+      H5D_ALLOC_TIME_EARLY
+   }
+   DATA {
+   (0,0,0): 10, 10, 10, 10,
+   (0,1,0): 10, 10, 10, 10,
+   (0,2,0): 10, 10, 10, 10,
+   (0,3,0): 10, 10, 10, 10,
+   (1,0,0): 11, 11, 11, 11,
+   (1,1,0): 11, 11, 11, 11,
+   (1,2,0): 11, 11, 11, 11,
+   (1,3,0): 11, 11, 11, 11,
+   (2,0,0): 12, 12, 12, 12,
+   (2,1,0): 12, 12, 12, 12,
+   (2,2,0): 12, 12, 12, 12,
+   (2,3,0): 12, 12, 12, 12,
+   (3,0,0): 20, 20, 20, 20,
+   (3,1,0): 20, 20, 20, 20,
+   (3,2,0): 20, 20, 20, 20,
+   (3,3,0): 20, 20, 20, 20,
+   (4,0,0): 21, 21, 21, 21,
+   (4,1,0): 21, 21, 21, 21,
+   (4,2,0): 21, 21, 21, 21,
+   (4,3,0): 21, 21, 21, 21,
+   (5,0,0): 22, 22, 22, 22,
+   (5,1,0): 22, 22, 22, 22,
+   (5,2,0): 22, 22, 22, 22,
+   (5,3,0): 22, 22, 22, 22,
+   (6,0,0): 30, 30, 30, 30,
+   (6,1,0): 30, 30, 30, 30,
+   (6,2,0): 30, 30, 30, 30,
+   (6,3,0): 30, 30, 30, 30,
+   (7,0,0): 31, 31, 31, 31,
+   (7,1,0): 31, 31, 31, 31,
+   (7,2,0): 31, 31, 31, 31,
+   (7,3,0): 31, 31, 31, 31,
+   (8,0,0): 32, 32, 32, 32,
+   (8,1,0): 32, 32, 32, 32,
+   (8,2,0): 32, 32, 32, 32,
+   (8,3,0): 32, 32, 32, 32
+   }
+}
+}
diff --git a/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl b/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl
new file mode 100644
index 0000000..c499b35
--- /dev/null
+++ b/tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl
@@ -0,0 +1,59 @@
+HDF5 "out-vds_conti.4_vds.h5" {
+DATASET "vds_dset" {
+   DATATYPE  H5T_STD_I32LE
+   DATASPACE  SIMPLE { ( 9, 4, 4 ) / ( 9, 4, 4 ) }
+   STORAGE_LAYOUT {
+      CONTIGUOUS
+      SIZE 576
+      OFFSET 2144
+   }
+   FILTERS {
+      NONE
+   }
+   FILLVALUE {
+      FILL_TIME H5D_FILL_TIME_IFSET
+      VALUE  -9
+   }
+   ALLOCATION_TIME {
+      H5D_ALLOC_TIME_LATE
+   }
+   DATA {
+   (0,0,0): 10, 10, 10, 10,
+   (0,1,0): 10, 10, 10, 10,
+   (0,2,0): 10, 10, 10, 10,
+   (0,3,0): 10, 10, 10, 10,
+   (1,0,0): 11, 11, 11, 11,
+   (1,1,0): 11, 11, 11, 11,
+   (1,2,0): 11, 11, 11, 11,
+   (1,3,0): 11, 11, 11, 11,
+   (2,0,0): 12, 12, 12, 12,
+   (2,1,0): 12, 12, 12, 12,
+   (2,2,0): 12, 12, 12, 12,
+   (2,3,0): 12, 12, 12, 12,
+   (3,0,0): 20, 20, 20, 20,
+   (3,1,0): 20, 20, 20, 20,
+   (3,2,0): 20, 20, 20, 20,
+   (3,3,0): 20, 20, 20, 20,
+   (4,0,0): 21, 21, 21, 21,
+   (4,1,0): 21, 21, 21, 21,
+   (4,2,0): 21, 21, 21, 21,
+   (4,3,0): 21, 21, 21, 21,
+   (5,0,0): 22, 22, 22, 22,
+   (5,1,0): 22, 22, 22, 22,
+   (5,2,0): 22, 22, 22, 22,
+   (5,3,0): 22, 22, 22, 22,
+   (6,0,0): 30, 30, 30, 30,
+   (6,1,0): 30, 30, 30, 30,
+   (6,2,0): 30, 30, 30, 30,
+   (6,3,0): 30, 30, 30, 30,
+   (7,0,0): 31, 31, 31, 31,
+   (7,1,0): 31, 31, 31, 31,
+   (7,2,0): 31, 31, 31, 31,
+   (7,3,0): 31, 31, 31, 31,
+   (8,0,0): 32, 32, 32, 32,
+   (8,1,0): 32, 32, 32, 32,
+   (8,2,0): 32, 32, 32, 32,
+   (8,3,0): 32, 32, 32, 32
+   }
+}
+}
diff --git a/tools/h5stat/CMakeTests.cmake b/tools/h5stat/CMakeTests.cmake
index 4175eb2..5d3c82e 100644
--- a/tools/h5stat/CMakeTests.cmake
+++ b/tools/h5stat/CMakeTests.cmake
@@ -25,6 +25,7 @@
       h5stat_newgrat.ddl
       h5stat_newgrat-UG.ddl
       h5stat_newgrat-UA.ddl
+      h5stat_idx.ddl
       h5stat_err1_links.ddl
       h5stat_links1.ddl
       h5stat_links2.ddl
@@ -45,6 +46,7 @@
       h5stat_filters.h5
       h5stat_tsohm.h5
       h5stat_newgrat.h5
+      h5stat_idx.h5
       h5stat_threshold.h5
   )
 
@@ -213,6 +215,8 @@
   ADD_H5_TEST (h5stat_newgrat 0 h5stat_newgrat.h5)
   ADD_H5_TEST (h5stat_newgrat-UG 0 -G h5stat_newgrat.h5)
   ADD_H5_TEST (h5stat_newgrat-UA 0 -A h5stat_newgrat.h5)
+# h5stat_idx.h5 is generated by h5stat_gentest.c
+  ADD_H5_TEST (h5stat_idx 0 h5stat_idx.h5)
 #
 # Tests for -l (--links) option on h5stat_threshold.h5: 
 #   -l 0 (incorrect threshold value)
diff --git a/tools/h5stat/h5stat_gentest.c b/tools/h5stat/h5stat_gentest.c
index 02bd136..b1ab168 100644
--- a/tools/h5stat/h5stat_gentest.c
+++ b/tools/h5stat/h5stat_gentest.c
@@ -121,10 +121,10 @@ gen_newgrat_file(const char *fname)
 	goto error;
     if(H5Dclose(did) < 0)
 	goto error;
-    if(H5Tclose(tid) < 0)
-	goto error;
     if(H5Sclose(sid) < 0)
 	goto error;
+    if(H5Tclose(tid) < 0)
+	goto error;
     if(H5Fclose(fid) < 0)
 	goto error;
 
@@ -133,15 +133,14 @@ error:
 	H5Pclose(fapl);
 	H5Pclose(fcpl);
 	H5Aclose(attr_id);
+        H5Dclose(did);
         H5Tclose(tid);
         H5Sclose(sid);
         H5Gclose(gid);
-        H5Dclose(did);
         H5Fclose(fid);
     } H5E_END_TRY;
 } /* gen_newgrat_file() */
 
-
 /*
  * Generate an HDF5 file with groups, datasets, attributes for testing the options:
  *	-l N (--links=N): Set the threshold for # of links when printing information for small groups.
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 190343b..234a331 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -75,14 +75,12 @@ static void table_attrs_free( table_attrs_t *table )
 {
     unsigned int i;
 
-    if (table)
-    {
-        if(table->attrs) 
-        {
-            for(i = 0; i < table->nattrs; i++) 
-            {
-                if(table->attrs[i].name)
-                    HDfree(table->attrs[i].name );
+    if (table) {
+        if (table->attrs) {
+            for (i = 0; i < table->nattrs; i++) {
+                if (table->attrs[i].name) {
+                    HDfree(table->attrs[i].name);
+                }
             } /* end for */
             HDfree(table->attrs);
             table->attrs = NULL;
@@ -108,17 +106,25 @@ static void table_attrs_free( table_attrs_t *table )
  *------------------------------------------------------------------------*/
 static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *table)
 {
-    size_t new_val;
+    size_t curr_val;
+
+    match_attr_t *new_attrs;
 
     if(table->nattrs == table->size) {
         table->size = MAX(1, table->size * 2);
-        table->attrs = (match_attr_t *)HDrealloc(table->attrs, table->size * sizeof(match_attr_t));
+        new_attrs = (match_attr_t *)HDrealloc(table->attrs, table->size * sizeof(match_attr_t));
+        if(new_attrs)
+            table->attrs = new_attrs;
     } /* end if */
 
-    new_val = table->nattrs++;
-    table->attrs[new_val].exist[0] = exist[0];
-    table->attrs[new_val].exist[1] = exist[1];
-    table->attrs[new_val].name = (char *)HDstrdup(name);
+    if(table->nattrs < table->size) {
+        curr_val = table->nattrs;
+        table->attrs[curr_val].exist[0] = exist[0];
+        table->attrs[curr_val].exist[1] = exist[1];
+        if(name)
+            table->attrs[curr_val].name = (char *)HDstrdup(name);
+        table->nattrs++;
+    }
 }
 
 /*-------------------------------------------------------------------------
@@ -127,7 +133,7 @@ static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *ta
  * Purpose: get list of matching attribute name from obj1 and obj2
  *
  * Note:
- *  Find common attribute; the algorithm for search is referred from 
+ *  Find common attribute; the algorithm for search is referred from
  *  build_match_list() in h5diff.c .
  *
  * Parameter:
@@ -158,49 +164,47 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
 
     table_attrs_init( &table_lp );
 
-    
-   /*--------------------------------------------------
-    * build the list
-    */
-    while(curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs)
-    {
-        /*------------------ 
-         * open attribute1 */
-        if((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+
+    /*--------------------------------------------------
+     * build the list
+     */
+    while (curr1 < oinfo1.num_attrs && curr2 < oinfo2.num_attrs) {
+        /*------------------
+        * open attribute1 */
+        if ((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC,
+                (hsize_t) curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
             goto error;
         /* get name */
-        if(H5Aget_name(attr1_id, (size_t)ATTR_NAME_MAX, name1) < 0)
+        if (H5Aget_name(attr1_id, (size_t) ATTR_NAME_MAX, name1) < 0)
             goto error;
 
-        /*------------------ 
-         * open attribute2 */
-        if((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+        /*------------------
+        * open attribute2 */
+        if ((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC,
+                (hsize_t) curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
             goto error;
         /* get name */
-        if(H5Aget_name(attr2_id, (size_t)ATTR_NAME_MAX, name2) < 0)
+        if (H5Aget_name(attr2_id, (size_t) ATTR_NAME_MAX, name2) < 0)
             goto error;
 
         /* criteria is string compare */
         cmp = HDstrcmp(name1, name2);
 
-        if(cmp == 0) 
-        {
+        if (cmp == 0) {
             infile[0] = 1;
             infile[1] = 1;
             table_attr_mark_exist(infile, name1, table_lp);
             curr1++;
             curr2++;
         }
-        else if(cmp < 0)
-        {
+        else if (cmp < 0) {
             infile[0] = 1;
             infile[1] = 0;
             table_attr_mark_exist(infile, name1, table_lp);
             table_lp->nattrs_only1++;
             curr1++;
         }
-        else
-        {
+        else {
             infile[0] = 0;
             infile[1] = 1;
             table_attr_mark_exist(infile, name2, table_lp);
@@ -218,14 +222,14 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
     /* list1 did not end */
     infile[0] = 1;
     infile[1] = 0;
-    while(curr1 < oinfo1.num_attrs)
-    {
-        /*------------------ 
-         * open attribute1 */
-        if((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+    while (curr1 < oinfo1.num_attrs) {
+        /*------------------
+        * open attribute1 */
+        if ((attr1_id = H5Aopen_by_idx(loc1_id, ".", H5_INDEX_NAME, H5_ITER_INC,
+                (hsize_t) curr1, H5P_DEFAULT, H5P_DEFAULT)) < 0)
             goto error;
         /* get name */
-        if(H5Aget_name(attr1_id, (size_t)ATTR_NAME_MAX, name1) < 0)
+        if (H5Aget_name(attr1_id, (size_t) ATTR_NAME_MAX, name1) < 0)
             goto error;
 
         table_attr_mark_exist(infile, name1, table_lp);
@@ -240,14 +244,14 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
     /* list2 did not end */
     infile[0] = 0;
     infile[1] = 1;
-    while(curr2 < oinfo2.num_attrs)
-    {
-        /*------------------ 
-         * open attribute2 */
-        if((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC, (hsize_t)curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
+    while (curr2 < oinfo2.num_attrs) {
+        /*------------------
+        * open attribute2 */
+        if ((attr2_id = H5Aopen_by_idx(loc2_id, ".", H5_INDEX_NAME, H5_ITER_INC,
+                (hsize_t) curr2, H5P_DEFAULT, H5P_DEFAULT)) < 0)
             goto error;
         /* get name */
-        if(H5Aget_name(attr2_id, (size_t)ATTR_NAME_MAX, name2) < 0)
+        if (H5Aget_name(attr2_id, (size_t) ATTR_NAME_MAX, name2) < 0)
             goto error;
 
         table_attr_mark_exist(infile, name2, table_lp);
@@ -259,25 +263,26 @@ static herr_t build_match_list_attrs(hid_t loc1_id, hid_t loc2_id, table_attrs_t
     }
 
     /*------------------------------------------------------
-    * print the list
-    */
-    if(options->m_verbose_level == 2)
-    {
+     * print the list
+     */
+    if (options->m_verbose_level == 2) {
         /* if '-v2' is detected */
         parallel_print("   obj1   obj2\n");
         parallel_print(" --------------------------------------\n");
-        for(i = 0; i < (unsigned int) table_lp->nattrs; i++) 
-        {
+        for (i = 0; i < (unsigned int) table_lp->nattrs; i++) {
             char c1, c2;
             c1 = (table_lp->attrs[i].exist[0]) ? 'x' : ' ';
             c2 = (table_lp->attrs[i].exist[1]) ? 'x' : ' ';
-            parallel_print("%5c %6c    %-15s\n", c1, c2, table_lp->attrs[i].name);
+            parallel_print("%5c %6c    %-15s\n", c1, c2,
+                    table_lp->attrs[i].name);
         } /* end for */
     }
 
-    if(options->m_verbose_level >= 1)
-    {
-        parallel_print("Attributes status:  %d common, %d only in obj1, %d only in obj2\n", table_lp->nattrs - table_lp->nattrs_only1 - table_lp->nattrs_only2, table_lp->nattrs_only1, table_lp->nattrs_only2 );
+    if (options->m_verbose_level >= 1) {
+        parallel_print(
+                "Attributes status:  %d common, %d only in obj1, %d only in obj2\n",
+                table_lp->nattrs - table_lp->nattrs_only1 - table_lp->nattrs_only2,
+                table_lp->nattrs_only1, table_lp->nattrs_only2);
     }
 
     *table_out = table_lp;
@@ -326,16 +331,16 @@ hsize_t diff_attr(hid_t loc1_id,
     hid_t      space2_id=-1;    /* space ID */
     hid_t      ftype1_id=-1;    /* file data type ID */
     hid_t      ftype2_id=-1;    /* file data type ID */
-    int	       vstrtype1=0;     /* ftype1 is a variable string */
-    int	       vstrtype2=0;     /* ftype2 is a variable string */
+    int           vstrtype1=0;     /* ftype1 is a variable string */
+    int           vstrtype2=0;     /* ftype2 is a variable string */
     hid_t      mtype1_id=-1;    /* memory data type ID */
     hid_t      mtype2_id=-1;    /* memory data type ID */
     size_t     msize1;          /* memory size of memory type */
     size_t     msize2;          /* memory size of memory type */
     void       *buf1=NULL;      /* data buffer */
     void       *buf2=NULL;      /* data buffer */
-    hbool_t    buf1hasdata=FALSE;	/* buffer has data */
-    hbool_t    buf2hasdata=FALSE;	/* buffer has data */
+    hbool_t    buf1hasdata=FALSE;    /* buffer has data */
+    hbool_t    buf2hasdata=FALSE;    /* buffer has data */
     hsize_t    nelmts1;         /* number of elements in dataset */
     int        rank1;           /* rank of dataset */
     int        rank2;           /* rank of dataset */
@@ -351,205 +356,213 @@ hsize_t diff_attr(hid_t loc1_id,
     int       j;
 
     table_attrs_t * match_list_attrs = NULL;
-    if( build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, options) < 0)
+    if (build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, options)
+            < 0)
         goto error;
 
     /* if detect any unique extra attr */
-    if(match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2)
-    {
+    if (match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2) {
         /* exit will be 1 */
         options->contents = 0;
     }
 
-    for(u = 0; u < (unsigned)match_list_attrs->nattrs; u++)
-    {
-        if( (match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1]) )
-        {
-        name1 = name2 = match_list_attrs->attrs[u].name;
-
-       /*--------------
-        * attribute 1 */
-        if((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0)
-            goto error;
-
-       /*--------------
-        * attribute 2 */
-        if((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0)
-            goto error;
-
-        /* get the datatypes  */
-        if((ftype1_id = H5Aget_type(attr1_id)) < 0)
-            goto error;
-	vstrtype1 = H5Tis_variable_str(ftype1_id);
-        if((ftype2_id = H5Aget_type(attr2_id)) < 0)
-            goto error;
-	vstrtype2 = H5Tis_variable_str(ftype2_id);
-	/* no compare if either one but not both are variable string type */
-	if (vstrtype1 != vstrtype2){
-	    if ((options->m_verbose||options->m_list_not_cmp))
-		parallel_print("Not comparable: one of attribute <%s/%s> or <%s/%s> is of variable length type\n",
-		    path1, name1, path2, name2);
-	    options->not_cmp = 1;
-	    return 0;
-	}
-
-        if((mtype1_id = h5tools_get_native_type(ftype1_id))<0)
-            goto error;
-        if((mtype2_id = h5tools_get_native_type(ftype2_id))<0)
-            goto error;
-        if((msize1 = H5Tget_size(mtype1_id))==0)
-            goto error;
-        if((msize2 = H5Tget_size(mtype2_id))==0)
-            goto error;
-
-        /* get the dataspace   */
-        if((space1_id = H5Aget_space(attr1_id)) < 0)
-            goto error;
-        if((space2_id = H5Aget_space(attr2_id)) < 0)
-            goto error;
-
-        /* get dimensions  */
-        if((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
-            goto error;
-        if((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
-            goto error;
+    for (u = 0; u < (unsigned) match_list_attrs->nattrs; u++) {
+        if ((match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1])) {
+            name1 = name2 = match_list_attrs->attrs[u].name;
 
+            /*--------------
+            * attribute 1 */
+            if ((attr1_id = H5Aopen(loc1_id, name1, H5P_DEFAULT)) < 0)
+                goto error;
 
-       /*----------------------------------------------------------------------
-        * check for comparable TYPE and SPACE
-        *----------------------------------------------------------------------
-        */
+            /*--------------
+            * attribute 2 */
+            if ((attr2_id = H5Aopen(loc2_id, name2, H5P_DEFAULT)) < 0)
+                goto error;
 
-        /* pass dims1 and dims2 for maxdims as well since attribute's maxdims
-         * are always same */
-        if( diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2,
-                          dims1, dims2, name1, name2, options, 0) != 1 )
-        {
-            if(H5Tclose(ftype1_id) < 0)
+            /* get the datatypes  */
+            if ((ftype1_id = H5Aget_type(attr1_id)) < 0)
                 goto error;
-            if(H5Tclose(ftype2_id) < 0)
+            vstrtype1 = H5Tis_variable_str(ftype1_id);
+            if ((ftype2_id = H5Aget_type(attr2_id)) < 0)
                 goto error;
-            if(H5Sclose(space1_id) < 0)
+            vstrtype2 = H5Tis_variable_str(ftype2_id);
+            /* no compare if either one but not both are variable string type */
+            if (vstrtype1 != vstrtype2) {
+                if ((options->m_verbose || options->m_list_not_cmp))
+                    parallel_print("Not comparable: one of attribute <%s/%s> or <%s/%s> is of variable length type\n",
+                            path1, name1, path2, name2);
+                options->not_cmp = 1;
+                if (H5Tclose(ftype1_id) < 0)
+                    goto error;
+                if (H5Tclose(ftype2_id) < 0)
+                    goto error;
+                if (H5Aclose(attr1_id) < 0)
+                    goto error;
+                if (H5Aclose(attr2_id) < 0)
+                    goto error;
+
+                continue;
+            }
+
+            if ((mtype1_id = h5tools_get_native_type(ftype1_id)) < 0)
                 goto error;
-            if(H5Sclose(space2_id) < 0)
+            if ((mtype2_id = h5tools_get_native_type(ftype2_id)) < 0)
                 goto error;
-            if(H5Aclose(attr1_id) < 0)
+            if ((msize1 = H5Tget_size(mtype1_id)) == 0)
                 goto error;
-            if(H5Aclose(attr2_id) < 0)
+            if ((msize2 = H5Tget_size(mtype2_id)) == 0)
                 goto error;
-            if(H5Tclose(mtype1_id) < 0)
+
+            /* get the dataspace   */
+            if ((space1_id = H5Aget_space(attr1_id)) < 0)
                 goto error;
-            if(H5Tclose(mtype2_id) < 0)
+            if ((space2_id = H5Aget_space(attr2_id)) < 0)
                 goto error;
 
-            continue;
-        }
+            /* get dimensions  */
+            if ((rank1 = H5Sget_simple_extent_dims(space1_id, dims1, NULL)) < 0)
+                goto error;
+            if ((rank2 = H5Sget_simple_extent_dims(space2_id, dims2, NULL)) < 0)
+                goto error;
 
-       /*-----------------------------------------------------------------
-        * "upgrade" the smaller memory size
-        *------------------------------------------------------------------
-        */
-        if (FAIL == match_up_memsize (ftype1_id, ftype2_id,
-                                      &mtype1_id, &mtype2_id, 
-                                      &msize1, &msize2))
-            goto error;
+            /*----------------------------------------------------------------------
+            * check for comparable TYPE and SPACE
+            *----------------------------------------------------------------------
+            */
+
+            /* pass dims1 and dims2 for maxdims as well since attribute's maxdims
+            * are always same */
+            if (diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2,
+                    dims1, dims2, name1, name2, options, 0) != 1) {
+                if (H5Tclose(ftype1_id) < 0)
+                    goto error;
+                if (H5Tclose(ftype2_id) < 0)
+                    goto error;
+                if (H5Sclose(space1_id) < 0)
+                    goto error;
+                if (H5Sclose(space2_id) < 0)
+                    goto error;
+                if (H5Aclose(attr1_id) < 0)
+                    goto error;
+                if (H5Aclose(attr2_id) < 0)
+                    goto error;
+                if (H5Tclose(mtype1_id) < 0)
+                    goto error;
+                if (H5Tclose(mtype2_id) < 0)
+                    goto error;
+
+                continue;
+            }
+
+            /*-----------------------------------------------------------------
+            * "upgrade" the smaller memory size
+            *------------------------------------------------------------------
+            */
+            if (FAIL == match_up_memsize(ftype1_id, ftype2_id, &mtype1_id,
+                            &mtype2_id, &msize1, &msize2))
+                goto error;
 
-        /*---------------------------------------------------------------------
-        * read
-        *----------------------------------------------------------------------
-        */
-        nelmts1 = 1;
-        for(j = 0; j < rank1; j++)
-            nelmts1 *= dims1[j];
-
-        buf1 = (void *)HDmalloc((size_t)(nelmts1 * msize1));
-        buf2 = (void *)HDmalloc((size_t)(nelmts1 * msize2));
-        if(buf1 == NULL || buf2 == NULL){
-            parallel_print( "cannot read into memory\n" );
-            goto error;
-        }
-        if(H5Aread(attr1_id,mtype1_id,buf1) < 0){
-	    parallel_print("Failed reading attribute1 %s/%s\n", path1, name1);
-	    goto error;
-	}else
-	    buf1hasdata = TRUE;
-        if(H5Aread(attr2_id,mtype2_id,buf2) < 0){
-	    parallel_print("Failed reading attribute2 %s/%s\n", path2, name2);
-	    goto error;
-	}else
-	    buf2hasdata = TRUE;
-
-        /* format output string */
-        HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
-        HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
-
-        /*---------------------------------------------------------------------
-        * array compare
-        *----------------------------------------------------------------------
-        */
-
-        /* always print name */
-        /* verbose (-v) and report (-r) mode */
-        if(options->m_verbose || options->m_report) {
-            do_print_attrname("attribute", np1, np2);
-
-            nfound = diff_array(buf1, buf2, nelmts1, (hsize_t)0, rank1, dims1,
-                options, np1, np2, mtype1_id, attr1_id, attr2_id);
-            print_found(nfound);
-        }
-        /* quiet mode (-q), just count differences */
-        else if(options->m_quiet) {
-            nfound = diff_array(buf1, buf2, nelmts1, (hsize_t)0, rank1, dims1,
-                options, np1, np2, mtype1_id, attr1_id, attr2_id);
-        }
-        /* the rest (-c, none, ...) */
-        else {
-            nfound = diff_array(buf1, buf2, nelmts1, (hsize_t)0, rank1, dims1,
-                options, np1, np2, mtype1_id, attr1_id, attr2_id);
+            /*---------------------------------------------------------------------
+            * read
+            *----------------------------------------------------------------------
+            */
+            nelmts1 = 1;
+            for (j = 0; j < rank1; j++)
+                nelmts1 *= dims1[j];
+
+            buf1 = (void *)HDmalloc((size_t)(nelmts1 * msize1));
+            buf2 = (void *)HDmalloc((size_t)(nelmts1 * msize2));
+            if (buf1 == NULL || buf2 == NULL) {
+                parallel_print("cannot read into memory\n");
+                goto error;
+            }
+            if (H5Aread(attr1_id, mtype1_id, buf1) < 0) {
+                parallel_print("Failed reading attribute1 %s/%s\n", path1,
+                        name1);
+                goto error;
+            }
+            else
+                buf1hasdata = TRUE;
+
+            if (H5Aread(attr2_id, mtype2_id, buf2) < 0) {
+                parallel_print("Failed reading attribute2 %s/%s\n", path2,
+                        name2);
+                goto error;
+            }
+            else
+                buf2hasdata = TRUE;
+
+            /* format output string */
+            HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
+            HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
+
+            /*---------------------------------------------------------------------
+            * array compare
+            *----------------------------------------------------------------------
+            */
+
+            /* always print name */
+            /* verbose (-v) and report (-r) mode */
+            if (options->m_verbose || options->m_report) {
+                do_print_attrname("attribute", np1, np2);
+
+                nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
+                        dims1, options, np1, np2, mtype1_id, attr1_id, attr2_id);
+                print_found(nfound);
+            }
+            /* quiet mode (-q), just count differences */
+            else if (options->m_quiet) {
+                nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
+                        dims1, options, np1, np2, mtype1_id, attr1_id, attr2_id);
+            }
+            /* the rest (-c, none, ...) */
+            else {
+                nfound = diff_array(buf1, buf2, nelmts1, (hsize_t) 0, rank1,
+                        dims1, options, np1, np2, mtype1_id, attr1_id, attr2_id);
 
                 /* print info if compatible and difference found */
-                if(nfound) {
+                if (nfound) {
                     do_print_attrname("attribute", np1, np2);
                     print_found(nfound);
                 } /* end if */
-        } /* end else */
+            } /* end else */
 
+            /*----------------------------------------------------------------------
+            * close
+            *----------------------------------------------------------------------
+            */
 
-       /*----------------------------------------------------------------------
-        * close
-        *----------------------------------------------------------------------
-        */
-
-        /* Free buf1 and buf2, check both VLEN-data VLEN-string to reclaim any 
-         * VLEN memory first */
-        if(TRUE == h5tools_detect_vlen(mtype1_id))
-            H5Dvlen_reclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
-        HDfree(buf1);
-        buf1 = NULL;
+            /* Free buf1 and buf2, check both VLEN-data VLEN-string to reclaim any
+            * VLEN memory first */
+            if (TRUE == h5tools_detect_vlen(mtype1_id))
+                H5Dvlen_reclaim(mtype1_id, space1_id, H5P_DEFAULT, buf1);
+            HDfree(buf1);
+            buf1 = NULL;
 
-        if(TRUE == h5tools_detect_vlen(mtype2_id))
-            H5Dvlen_reclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
-        HDfree(buf2);
-        buf2 = NULL;
+            if (TRUE == h5tools_detect_vlen(mtype2_id))
+                H5Dvlen_reclaim(mtype2_id, space2_id, H5P_DEFAULT, buf2);
+            HDfree(buf2);
+            buf2 = NULL;
 
-        if(H5Tclose(ftype1_id) < 0)
-            goto error;
-        if(H5Tclose(ftype2_id) < 0)
-            goto error;
-        if(H5Sclose(space1_id) < 0)
-            goto error;
-        if(H5Sclose(space2_id) < 0)
-            goto error;
-        if(H5Aclose(attr1_id) < 0)
-            goto error;
-        if(H5Aclose(attr2_id) < 0)
-            goto error;
-        if(H5Tclose(mtype1_id) < 0)
-            goto error;
-        if(H5Tclose(mtype2_id) < 0)
-            goto error;
+            if (H5Tclose(ftype1_id) < 0)
+                goto error;
+            if (H5Tclose(ftype2_id) < 0)
+                goto error;
+            if (H5Sclose(space1_id) < 0)
+                goto error;
+            if (H5Sclose(space2_id) < 0)
+                goto error;
+            if (H5Aclose(attr1_id) < 0)
+                goto error;
+            if (H5Aclose(attr2_id) < 0)
+                goto error;
+            if (H5Tclose(mtype1_id) < 0)
+                goto error;
+            if (H5Tclose(mtype2_id) < 0)
+                goto error;
 
-        nfound_total += nfound;
+            nfound_total += nfound;
         }
     } /* u */
 
diff --git a/tools/lib/h5diff_dset.c b/tools/lib/h5diff_dset.c
index b8dd0e8..63f1483 100644
--- a/tools/lib/h5diff_dset.c
+++ b/tools/lib/h5diff_dset.c
@@ -71,9 +71,7 @@ hsize_t diff_dataset( hid_t file1_id,
     if((dcpl1 = H5Dget_create_plist(did1)) < 0)
         goto error;
     if((dcpl2 = H5Dget_create_plist(did2)) < 0)
-    {
         goto error;
-    }
 
     /*-------------------------------------------------------------------------
     * check if the dataset creation property list has filters that
@@ -191,6 +189,10 @@ hsize_t diff_datasetid( hid_t did1,
     hid_t      f_tid2=-1;
     hid_t      m_tid1=-1;
     hid_t      m_tid2=-1;
+    hid_t      dcpl1 = -1;
+    hid_t      dcpl2 = -1;
+    H5D_layout_t     stl1 = -1;
+    H5D_layout_t     stl2 = -1;
     size_t     m_size1;
     size_t     m_size2;
     H5T_sign_t sign1;
@@ -260,6 +262,21 @@ hsize_t diff_datasetid( hid_t did1,
         goto error;
     }
 
+
+    /*-------------------------------------------------------------------------
+    * get the storage layout type
+    *-------------------------------------------------------------------------
+    */
+    if((dcpl1 = H5Dget_create_plist(did1)) < 0)
+        goto error;
+    if((dcpl2 = H5Dget_create_plist(did2)) < 0)
+        goto error;
+
+    if((stl1 = H5Pget_layout(dcpl1)) < 0)
+        goto error;
+    if((stl2 = H5Pget_layout(dcpl2)) < 0)
+        goto error;
+
     /*-------------------------------------------------------------------------
     * check for empty datasets
     *-------------------------------------------------------------------------
@@ -271,10 +288,18 @@ hsize_t diff_datasetid( hid_t did1,
 
     if (storage_size1==0 || storage_size2==0)
     {
-        if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name)
-            parallel_print("Not comparable: <%s> or <%s> is an empty dataset\n", obj1_name, obj2_name);
-        can_compare=0;
-        options->not_cmp=1;
+        if (stl1==H5D_VIRTUAL || stl2==H5D_VIRTUAL)
+        {
+            if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name)
+                parallel_print("Warning: <%s> or <%s> is a virtual dataset\n", obj1_name, obj2_name);
+        }
+        else
+        {
+            if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name)
+                parallel_print("Not comparable: <%s> or <%s> is an empty dataset\n", obj1_name, obj2_name);
+            can_compare=0;
+            options->not_cmp=1;
+        }
     }
 
     /*-------------------------------------------------------------------------
@@ -329,7 +354,7 @@ hsize_t diff_datasetid( hid_t did1,
                 parallel_print("Not comparable: <%s> has sign %s ", obj1_name, get_sign(sign1));
                 parallel_print("and <%s> has sign %s\n", obj2_name, get_sign(sign2));
             }
-    
+
             can_compare=0;
             options->not_cmp=1;
         }
@@ -369,7 +394,7 @@ hsize_t diff_datasetid( hid_t did1,
         h5difftrace("upgrade the smaller memory size?\n");
 
         if (FAIL == match_up_memsize (f_tid1, f_tid2,
-                                      &m_tid1, &m_tid2, 
+                                      &m_tid1, &m_tid2,
                                       &m_size1, &m_size2))
             goto error;
 
diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt
index 088dbdf..6397899 100644
--- a/tools/misc/CMakeLists.txt
+++ b/tools/misc/CMakeLists.txt
@@ -28,10 +28,17 @@ TARGET_C_PROPERTIES (h5mkgrp STATIC " " " ")
 target_link_libraries (h5mkgrp  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
 set_target_properties (h5mkgrp PROPERTIES FOLDER tools)
 
+add_executable (h5clear ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5clear.c)
+TARGET_NAMING (h5clear STATIC)
+TARGET_C_PROPERTIES (h5clear STATIC " " " ")
+target_link_libraries (h5clear  ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
+set_target_properties (h5clear PROPERTIES FOLDER tools)
+
 set (H5_DEP_EXECUTABLES
     h5debug
     h5repart
     h5mkgrp
+    h5clear
 )
 
 #-----------------------------------------------------------------------------
@@ -63,6 +70,18 @@ if (BUILD_TESTING)
   target_link_libraries (h5repart_test ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
   set_target_properties (h5repart_test PROPERTIES FOLDER tools)
 
+  add_executable (h5clear_gentest ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5clear_gentest.c)
+  TARGET_NAMING (h5clear_gentest STATIC)
+  TARGET_C_PROPERTIES (h5clear_gentest STATIC " " " ")
+  target_link_libraries (h5clear_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (h5clear_gentest PROPERTIES FOLDER tools)
+
+  add_executable (clear_open_chk ${HDF5_TOOLS_MISC_SOURCE_DIR}/clear_open_chk.c)
+  TARGET_NAMING (clear_open_chk STATIC)
+  TARGET_C_PROPERTIES (clear_open_chk STATIC " " " ")
+  target_link_libraries (clear_open_chk ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
+  set_target_properties (clear_open_chk PROPERTIES FOLDER tools)
+
   include (CMakeTests.cmake)
 endif (BUILD_TESTING)
 
diff --git a/tools/misc/CMakeTests.cmake b/tools/misc/CMakeTests.cmake
index d28b744..dabcc23 100644
--- a/tools/misc/CMakeTests.cmake
+++ b/tools/misc/CMakeTests.cmake
@@ -4,7 +4,7 @@
 ###           T E S T I N G                                                ###
 ##############################################################################
 ##############################################################################
-  
+
   # --------------------------------------------------------------------
   # Copy all the HDF5 files from the source directory into the test directory
   # --------------------------------------------------------------------
@@ -39,7 +39,7 @@
         ARGS       -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file} ${dest}
     )
   endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES})
-  
+
   set (HDF5_MKGRP_TEST_FILES
       #h5mkgrp_help.txt
       #h5mkgrp_version
@@ -90,14 +90,14 @@
       add_test (
           NAME H5MKGRP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
-              -E remove 
-                  ${resultfile}.h5 
+              -E remove
+                  ${resultfile}.h5
                   ${resultfile}.out
                   ${resultfile}.out.err
       )
       set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles")
     endif (NOT HDF5_ENABLE_USING_MEMCHECKER)
-      
+
     add_test (
         NAME H5MKGRP-${resultfile}
         COMMAND $<TARGET_FILE:h5mkgrp> ${resultoption} ${resultfile}.h5 ${ARGN}
@@ -132,8 +132,8 @@
       add_test (
           NAME H5MKGRP_CMP-${resultfile}-clear-objects
           COMMAND    ${CMAKE_COMMAND}
-              -E remove 
-                  ${resultfile}.h5 
+              -E remove
+                  ${resultfile}.h5
                   ${resultfile}.out
                   ${resultfile}.out.err
       )
@@ -159,11 +159,12 @@
 ##############################################################################
 ##############################################################################
 
+  ###################### H5REPART #########################
   # Remove any output file left over from previous test run
   add_test (
     NAME H5REPART-clearall-objects
     COMMAND    ${CMAKE_COMMAND}
-        -E remove 
+        -E remove
         fst_family00000.h5
         scd_family00000.h5
         scd_family00001.h5
@@ -175,7 +176,7 @@
     set_tests_properties (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test})
   endif (NOT "${last_test}" STREQUAL "")
   set (last_test "H5REPART-clearall-objects")
-  
+
   # repartition family member size to 20,000 bytes.
   add_test (NAME H5REPART-h5repart_20K COMMAND $<TARGET_FILE:h5repart> -m 20000 family_file%05d.h5 fst_family%05d.h5)
   set_tests_properties (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects)
@@ -195,50 +196,137 @@
   set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES}
         h5repart_test
   )
-  
+
+  ###################### H5CLEAR #########################
+  # Remove any output file left over from previous test run
+  add_test (
+    NAME H5CLEAR-clearall-objects
+    COMMAND    ${CMAKE_COMMAND}
+        -E remove
+        h5clear_log_v3.h5
+        h5clear_sec2_v0.h5
+        h5clear_sec2_v2.h5
+        h5clear_sec2_v3.h5
+        latest_h5clear_log_v3.h5
+        latest_h5clear_sec2_v3.h5
+  )
+  if (NOT "${last_test}" STREQUAL "")
+    set_tests_properties (H5CLEAR-clearall-objects PROPERTIES DEPENDS ${last_test})
+  endif (NOT "${last_test}" STREQUAL "")
+  set (last_test "H5CLEAR-clearall-objects")
+
+  # create the output files to be used.
+  add_test (NAME H5CLEAR-h5clear_gentest COMMAND $<TARGET_FILE:h5clear_gentest>)
+  set_tests_properties (H5CLEAR-h5clear_gentest PROPERTIES DEPENDS "H5CLEAR-clearall-objects")
+
+  # Initial file open fails
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v3_F COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3_F PROPERTIES WILL_FAIL "true")
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-sec2_v3 COMMAND $<TARGET_FILE:h5clear> h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-h5clear-sec2_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v3_F)
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v3 COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v3)
+
+  # Initial file open fails
+  add_test (NAME H5CLEAR-clear_open_chk-log_v3_F COMMAND $<TARGET_FILE:clear_open_chk> h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-log_v3_F PROPERTIES WILL_FAIL "true")
+  set_tests_properties (H5CLEAR-clear_open_chk-log_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-log_v3 COMMAND $<TARGET_FILE:h5clear> h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-h5clear-log_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-log_v3_F)
+  add_test (NAME H5CLEAR-clear_open_chk-log_v3 COMMAND $<TARGET_FILE:clear_open_chk> h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-log_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-log_v3)
+
+  # Initial file open fails
+  add_test (NAME H5CLEAR-clear_open_chk-latest_sec2_v3_F COMMAND $<TARGET_FILE:clear_open_chk> latest_h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3_F PROPERTIES WILL_FAIL "true")
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-latest_sec2_v3 COMMAND $<TARGET_FILE:h5clear> latest_h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-h5clear-latest_sec2_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-latest_sec2_v3_F)
+  add_test (NAME H5CLEAR-clear_open_chk-latest_sec2_v3 COMMAND $<TARGET_FILE:clear_open_chk> latest_h5clear_sec2_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-latest_sec2_v3)
+
+  # Initial file open fails
+  add_test (NAME H5CLEAR-clear_open_chk-latest_log_v3_F COMMAND $<TARGET_FILE:clear_open_chk> h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3_F PROPERTIES WILL_FAIL "true")
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-latest_log_v3 COMMAND $<TARGET_FILE:h5clear> latest_h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-h5clear-latest_log_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-latest_log_v3_F)
+  add_test (NAME H5CLEAR-clear_open_chk-latest_log_v3 COMMAND $<TARGET_FILE:clear_open_chk> latest_h5clear_log_v3.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-latest_log_v3)
+
+  #
+  # File open succeeds because the library does not check status_flags for file with < v3 superblock
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v0_P COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v0.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v0_P PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-sec2_v0 COMMAND $<TARGET_FILE:h5clear> h5clear_sec2_v0.h5)
+  set_tests_properties (H5CLEAR-h5clear-sec2_v0 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v0_P)
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v0 COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v0.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v0 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v0)
+
+  #
+  # File open succeeds because the library does not check status_flags for file with < v3 superblock
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v2_P COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v2.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v2_P PROPERTIES DEPENDS H5CLEAR-h5clear_gentest)
+  # After "h5clear" the file, the subsequent file open succeeds
+  add_test (NAME H5CLEAR-h5clear-sec2_v2 COMMAND $<TARGET_FILE:h5clear> h5clear_sec2_v2.h5)
+  set_tests_properties (H5CLEAR-h5clear-sec2_v2 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v2_P)
+  add_test (NAME H5CLEAR-clear_open_chk-sec2_v2 COMMAND $<TARGET_FILE:clear_open_chk> h5clear_sec2_v2.h5)
+  set_tests_properties (H5CLEAR-clear_open_chk-sec2_v2 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v2)
+
+  set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES}
+        h5clear_gentest
+  )
+
+  ###################### H5MKGRP #########################
   if (HDF5_ENABLE_USING_MEMCHECKER)
     add_test (
         NAME H5MKGRP-clearall-objects
         COMMAND    ${CMAKE_COMMAND}
-            -E remove 
+            -E remove
                 h5mkgrp_help.out
                 h5mkgrp_help.out.err
                 h5mkgrp_version.out
                 h5mkgrp_version.out.err
-                h5mkgrp_single.h5 
+                h5mkgrp_single.h5
                 h5mkgrp_single.out
                 h5mkgrp_single.out.err
-                h5mkgrp_single_v.h5 
+                h5mkgrp_single_v.h5
                 h5mkgrp_single_v.out
                 h5mkgrp_single_v.out.err
-                h5mkgrp_single_p.h5 
+                h5mkgrp_single_p.h5
                 h5mkgrp_single_p.out
                 h5mkgrp_single_p.out.err
-                h5mkgrp_single_l.h5 
+                h5mkgrp_single_l.h5
                 h5mkgrp_single_l.out
                 h5mkgrp_single_l.out.err
-                h5mkgrp_several.h5 
+                h5mkgrp_several.h5
                 h5mkgrp_several.out
                 h5mkgrp_several.out.err
-                h5mkgrp_several_v.h5 
+                h5mkgrp_several_v.h5
                 h5mkgrp_several_v.out
                 h5mkgrp_several_v.out.err
-                h5mkgrp_several_p.h5 
+                h5mkgrp_several_p.h5
                 h5mkgrp_several_p.out
                 h5mkgrp_several_p.out.err
-                h5mkgrp_several_l.h5 
+                h5mkgrp_several_l.h5
                 h5mkgrp_several_l.out
                 h5mkgrp_several_l.out.err
-                h5mkgrp_nested_p.h5 
+                h5mkgrp_nested_p.h5
                 h5mkgrp_nested_p.out
                 h5mkgrp_nested_p.out.err
-                h5mkgrp_nested_lp.h5 
+                h5mkgrp_nested_lp.h5
                 h5mkgrp_nested_lp.out
                 h5mkgrp_nested_lp.out.err
-                h5mkgrp_nested_mult_p.h5 
+                h5mkgrp_nested_mult_p.h5
                 h5mkgrp_nested_mult_p.out
                 h5mkgrp_nested_mult_p.out.err
-                h5mkgrp_nested_mult_lp.h5 
+                h5mkgrp_nested_mult_lp.h5
                 h5mkgrp_nested_mult_lp.out
                 h5mkgrp_nested_mult_lp.out.err
     )
@@ -265,7 +353,7 @@
   ADD_H5_TEST (h5mkgrp_several_p 0 "-p" one two)
   ADD_H5_TEST (h5mkgrp_several_l 0 "-l" one two)
 
-  # Create various nested groups 
+  # Create various nested groups
   ADD_H5_TEST (h5mkgrp_nested_p 0 "-p" /one/two)
   ADD_H5_TEST (h5mkgrp_nested_lp 0 "-lp" /one/two)
   ADD_H5_TEST (h5mkgrp_nested_mult_p 0 "-p" /one/two /three/four)
diff --git a/tools/misc/clear_open_chk.c b/tools/misc/clear_open_chk.c
index f3e6ba3..7e86068 100644
--- a/tools/misc/clear_open_chk.c
+++ b/tools/misc/clear_open_chk.c
@@ -60,6 +60,8 @@ main(int argc, char *argv[])
 	return EXIT_FAILURE;
     }
 
+    if(fname)
+        HDfree(fname);
     /* Close the file */
     if(H5Fclose(fid) < 0) {
 	HDfprintf(stderr, "clear_open_chk: cannot close the file\n");
diff --git a/tools/perform/overhead.c b/tools/perform/overhead.c
index feabd3a..277f7a4 100644
--- a/tools/perform/overhead.c
+++ b/tools/perform/overhead.c
@@ -42,10 +42,6 @@
 #   include <unistd.h>
 #endif
 
-#ifdef H5_HAVE_IO_H
-#   include <io.h>
-#endif
-
 /* Solaris Studio defines attribute, but for the attributes we need */
 #if !defined(H5_HAVE_ATTRIBUTE) || defined __cplusplus || defined(__SUNPRO_C)
 #   undef __attribute__
diff --git a/tools/perform/perf.c b/tools/perform/perf.c
index afd13c0..7b9590c 100644
--- a/tools/perform/perf.c
+++ b/tools/perform/perf.c
@@ -24,15 +24,26 @@
 
 #include "hdf5.h"
 #include "H5private.h"
+
 #ifdef H5_HAVE_PARALLEL
+
+#ifdef H5_STDC_HEADERS
+#include <errno.h>
+#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <fcntl.h>
+#include <string.h>
+#endif
+
 #ifdef H5_HAVE_UNISTD_H
+#include <sys/types.h>
 #include <unistd.h>
 #endif
-#include <errno.h>
-#include <string.h>
+
+#ifdef H5_HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
 #if defined(H5_TIME_WITH_SYS_TIME)
 #   include <sys/time.h>
 #   include <time.h>
@@ -41,6 +52,7 @@
 #else
 #   include <time.h>
 #endif
+
 #include <mpi.h>
 #ifndef MPI_FILE_NULL           /*MPIO may be defined in mpi.h already       */
 #   include <mpio.h>
diff --git a/tools/perform/pio_engine.c b/tools/perform/pio_engine.c
index 96cfcc2..eaedcb8 100644
--- a/tools/perform/pio_engine.c
+++ b/tools/perform/pio_engine.c
@@ -17,17 +17,23 @@
  * Author: Albert Cheng of NCSA, Oct 24, 2001.
  */
 
-#include <sys/types.h>
-#include <sys/stat.h>
+#include "hdf5.h"
+
+#ifdef H5_STDC_HEADERS
+#include <errno.h>
+#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <fcntl.h>
+#endif
+
 #ifdef H5_HAVE_UNISTD_H
+#include <sys/types.h>
 #include <unistd.h>
 #endif
-#include <errno.h>
 
-#include "hdf5.h"
+#ifdef H5_HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
 
 #ifdef H5_HAVE_PARALLEL
 
diff --git a/tools/perform/pio_perf.c b/tools/perform/pio_perf.c
index 509513b..e2ec453 100644
--- a/tools/perform/pio_perf.c
+++ b/tools/perform/pio_perf.c
@@ -482,7 +482,7 @@ run_test_loop(struct options *opts)
                 buf_size,((double)parms.num_dsets * (double)parms.num_bytes) / ONE_MB);
 
             print_indent(1);
-            output_report("  # of files: %ld, # of datasets: %ld, dataset size: %.2f MBs\n",
+            output_report("  # of files: %ld, # of datasets: %ld, dataset size: %.2f MB\n",
                 parms.num_files, parms.num_dsets, (double)(opts->num_bpp*parms.num_procs)/ONE_MB);
         }
 
diff --git a/tools/perform/sio_engine.c b/tools/perform/sio_engine.c
index 5622810..505b0f7 100644
--- a/tools/perform/sio_engine.c
+++ b/tools/perform/sio_engine.c
@@ -16,17 +16,23 @@
  * Author: Christian Chilan, April 2008
  */
 
-#include <sys/types.h>
-#include <sys/stat.h>
+#include "hdf5.h"
+
+#ifdef H5_STDC_HEADERS
+#include <errno.h>
+#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <fcntl.h>
+#endif
+
 #ifdef H5_HAVE_UNISTD_H
-#  include <unistd.h>
+#include <sys/types.h>
+#include <unistd.h>
 #endif
-#include <errno.h>
 
-#include "hdf5.h"
+#ifdef H5_HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
 
 #include "sio_perf.h"
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/hdf5.git



More information about the Pkg-grass-devel mailing list