diff --git a/base/.gitignore b/base/.gitignore
deleted file mode 100644
index f3e71812850e072066f1c3afdfa824b89ceb4387..0000000000000000000000000000000000000000
--- a/base/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/targets
-/test-output
-/bin
-/build
diff --git a/base/build.gradle b/base/build.gradle
deleted file mode 100644
index 4397cfec161683609744eb267b307ea3c0e93ba3..0000000000000000000000000000000000000000
--- a/base/build.gradle
+++ /dev/null
@@ -1,106 +0,0 @@
-apply from: '../gradle/javaproject.gradle'
-
-group='sis'
-
-dependencies {
-    compile 'apache:commons-io:+',
-            'apache:commons-lang:+',
-            'testng:testng:+',
-            'rinn:restrictions:+'
-} 
-
-tasks.withType(Test) {
-    systemProperty "java.library.path", "libs/native/unix/amd64-Linux:libs/native/nativedata/amd64-Linux:libs/native/unix/x86_64-Mac OS X:libs/native/nativedata/x86_64-Mac OS X"
-}
-
-
-sourceSets {
-  test {
-    resources {
-      srcDir "libs"
-      include "**"
-    }
-  }
-}
-
-jar {
-    manifest {
-        attributes 'Main-Class': 'ch.systemsx.cisd.base.BuildAndEnvironmentInfo'
-    }
-
-    from('targets/dist') {
-        include 'BUILD*INFO'
-    }    
-
-    from fileTree("libs/")
-}
-
-task standaloneTestJar(type: Jar, dependsOn: [classes, testClasses]) {
-    archiveName "${project.group}-base-test.jar"
-    from files(sourceSets.main.output.classesDir)
-    from files(sourceSets.main.output.resourcesDir)
-    from files(sourceSets.test.output.classesDir)
-    from files("libs")
- 
-    from {configurations.testRuntime.collect {zipTree(it)}}
- 
-    manifest {
-        attributes 'Main-Class': 'ch.systemsx.cisd.base.AllTests'
-    }
-}
-
-task javadocZip(type: Zip, dependsOn: javadoc) {
-    archiveName "${project.group}-base-javadoc.zip"
-    from javadoc.destinationDir
-}
-
-task distributionZip(type: Zip, dependsOn: [jar, sourcesJar, javadocZip, standaloneTestJar]) {
-    baseName = "${project.group}-base"
-    from ('dist') {
-        into "${project.group}-base"
-    }
-
-    from ('doc') {
-        into "${project.group}-base/doc"
-    }
-
-    from (jar.archivePath) {
-        into "${project.group}-base/lib"
-        rename '(.*)', "${project.group}-base.jar"
-    }
-    
-    from (sourcesJar.archivePath) {
-        into "${project.group}-base/src"
-        rename '(.*)', "${project.group}-base-src.jar"
-    }
-    
-    from (standaloneTestJar.archivePath) {
-        into "${project.group}-base/lib"
-    }
-    
-    from (javadocZip.archivePath) {
-        into "${project.group}-base/doc"
-    }
-}
-
-build.dependsOn distributionZip
-
-publishing {
-    publications {
-        ivy(IvyPublication) {
-            module "${project.group}-base"
-            revision project.revisionForPublication
-            from components.java
-            artifact(sourcesJar) {
-                type = 'source'
-            }
-            descriptor {
-                withXml {
-                    for (org in ['testng', 'rinn']) {
-                      asNode().dependencies.dependency.find { it.@org == org }.replaceNode {}
-                    }
-                }
-            }
-        }
-  }
-}
\ No newline at end of file
diff --git a/base/build/antrun.sh b/base/build/antrun.sh
deleted file mode 100755
index 5ff1a62b259d6011d228440f2fb89ec0dbecf747..0000000000000000000000000000000000000000
--- a/base/build/antrun.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-ME="$0"
-MYDIR=${ME%/*}
-cd $MYDIR
-ant -lib ../../build_resources/lib/ecj.jar "$@"
diff --git a/base/build/build.xml b/base/build/build.xml
deleted file mode 100644
index 32b7fa303e0ddde10f24f68d8a9a4c9adb59a2ab..0000000000000000000000000000000000000000
--- a/base/build/build.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<project name="base" default="dist" basedir="..">
-	<target name="clean">
-		<delete dir="${dist}" />
-	</target>
-
-	<import file="../../build_resources/ant/build-common.xml" />
-
-	<project-classpath name="ecp" classes="${classes}" />
-	<property name="distfolder" value="sis-base" />
-	<property name="mainfolder" value="base" />
-	<property name="jar.file" value="${dist}/sis-base.jar" />
-	<property name="dist.file" value="${dist}/sis-base" />
-	<property name="jar.test.file" value="${dist}/sis-base-test.jar" />
-	<property name="src.zip.file" value="${dist}/sis-base-src.zip" />
-	<property name="javadoc.zip.file" value="${dist}/sis-base-javadoc.zip" />
-	<property name="original.dist" value="../${ant.project.name}/dist" />
-	<property name="nativesrc" value="libs/native" />
-	<property name="nativeroot" value="${targets}/ant" />
-	<property name="native" value="${nativeroot}/native" />
-
-	<property name="dist.common" value="${dist}/${mainfolder}" />
-	<property name="dist.common.lib" value="${dist.common}/lib" />
-
-
-	<target name="ci" depends="build-common.ci, check-dependencies, dist" />
-
-	<target name="jar" depends="compile">
-		<mkdir dir="${dist.common.lib}" />
-		<build-info revision="revision.number" version="version.number" clean="clean.flag" />
-		<echo file="${build.info.file}">${version.number}:${revision.number}:${clean.flag}</echo>
-		<copy todir="${native}">
-			<fileset dir="${nativesrc}">
-				<include name="**/libunix.so" />
-				<include name="**/libunix.jnilib" />
-			</fileset>
-		</copy>
-		<copy todir="${native}">
-			<fileset dir="${nativesrc}">
-				<include name="**/libnativedata.so" />
-				<include name="**/libnativedata.jnilib" />
-				<include name="**/nativedata.dll" />
-			</fileset>
-		</copy>
-		<recursive-jar destfile="${jar.file}">
-			<fileset dir="${classes}">
-				<include name="**/*.class" />
-				<include name="${build.info.filename}" />
-			</fileset>
-			<fileset dir="${nativeroot}">
-				<include name="native/**/*.so" />
-				<include name="native/**/*.jnilib" />
-				<include name="native/**/*.dll" />
-			</fileset>
-			<manifest>
-				<attribute name="Main-Class"
-				           value="ch.systemsx.cisd.base.BuildAndEnvironmentInfo" />
-				<attribute name="Version" value="${version.number}" />
-				<attribute name="Build-Number"
-				           value="${version.number} (r${revision.number},${clean.flag})" />
-			</manifest>
-		</recursive-jar>
-	</target>
-
-	<target name="jar-test" depends="compile-tests">
-		<mkdir dir="${dist.common.lib}" />
-		<build-info revision="revision.number" version="version.number" clean="clean.flag" />
-		<echo file="${build.info.file}">${version.number}:${revision.number}:${clean.flag}</echo>
-		<copy todir="${native}">
-			<fileset dir="${nativesrc}">
-				<include name="**/libunix.so" />
-				<include name="**/libunix.jnilib" />
-			</fileset>
-		</copy>
-		<copy todir="${native}">
-			<fileset dir="${nativesrc}">
-				<include name="**/libnativedata.so" />
-				<include name="**/libnativedata.jnilib" />
-				<include name="**/nativedata.dll" />
-			</fileset>
-		</copy>
-		<recursive-jar destfile="${jar.test.file}">
-			<fileset dir="${classes}">
-				<include name="**/*.class" />
-				<include name="${build.info.filename}" />
-			</fileset>
-			<fileset dir="${nativeroot}">
-				<include name="native/**/*.so" />
-				<include name="native/**/*.jnilib" />
-				<include name="native/**/*.dll" />
-			</fileset>
-			<zipfileset src="${lib}/testng/testng-jdk15.jar" />
-			<zipfileset src="${lib}/commons-lang/commons-lang.jar" />
-			<zipfileset src="${lib}/commons-io/commons-io.jar" />
-			<manifest>
-				<attribute name="Main-Class" value="ch.systemsx.cisd.base.AllTests" />
-				<attribute name="Version" value="${version.number}" />
-				<attribute name="Build-Number"
-				           value="${version.number} (r${revision.number},${clean.flag})" />
-			</manifest>
-		</recursive-jar>
-	</target>
-
-	<target name="src-zip">
-		<build-info revision="revision.number" version="version.number" clean="clean.flag" />
-		<mkdir dir="${classes}" />
-		<echo file="${build.info.file}">${version.number}:${revision.number}:${clean.flag}</echo>
-		<jar destfile="${src.zip.file}">
-			<fileset dir="${classes}">
-				<include name="${build.info.filename}" />
-			</fileset>
-			<fileset dir="${sources}">
-				<include name="**/*.java" />
-			</fileset>
-			<fileset dir="${sources.test}">
-				<include name="ch/systemsx/cisd/base/tests/**/*.java" />
-			</fileset>
-			<manifest>
-				<attribute name="Version" value="${version.number}" />
-				<attribute name="Build-Number"
-				           value="${version.number} (r${revision.number},${clean.flag})" />
-			</manifest>
-		</jar>
-	</target>
-
-	<target name="doc">
-		<delete dir="targets/doc" />
-		<javadoc sourcepath="source/java"
-		         packagenames="ch.systemsx.cisd.base.*"
-		         classpath="../libraries/commons-lang/commons-lang.jar:../libraries/commons-io/commons-io.jar:../libraries/testng/testng-jdk15.jar:../libraries/restrictionchecker/restrictions.jar"
-		         destdir="targets/doc"
-		         access="public" />
-	</target>
-
-	<target name="dist" depends="clean, jar, jar-test, src-zip, doc">
-		<zip destfile="${javadoc.zip.file}" basedir="${targets}" includes="doc/**" />
-		<delete dir="${dist}/${mainfolder}" />
-		<delete dir="${dist}/${distfolder}" />
-		<move file="${jar.file}" todir="${dist}/${distfolder}/lib" />
-		<move file="${jar.test.file}" todir="${dist}/${distfolder}/lib" />
-		<move file="${src.zip.file}" todir="${dist}/${distfolder}/src" />
-		<move file="${javadoc.zip.file}" todir="${dist}/${distfolder}/doc" />
-		<copy todir="${dist}/${distfolder}/doc">
-			<fileset dir="doc" includes="**" />
-		</copy>
-	  <copy todir="${dist}/${distfolder}">
-	    <fileset dir="${original.dist}"/>
-	  </copy>
-		<zip destfile="${dist.file}-${version.number}-r${revision.number}.zip"
-		     basedir="${dist}"
-		     includes="${distfolder}/**" />
-		<delete dir="${dist}/${distfolder}" />
-	</target>
-
-	<!--
-	  // Runs the test suite 'tests.xml'.
-	  -->
-	<target name="run-tests" description="Runs the test suite 'tests.xml'.">
-		<antcall target="build-common.run-tests">
-			<param name="test.suite" value="tests.xml" />
-		</antcall>
-	</target>
-
-</project>
diff --git a/base/dist/COPYING b/base/dist/COPYING
deleted file mode 100644
index 0bae4727c89b5e38a5c28bff7ff8550dc945aaf5..0000000000000000000000000000000000000000
--- a/base/dist/COPYING
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
diff --git a/base/dist/COPYING_HDF b/base/dist/COPYING_HDF
deleted file mode 100644
index 7ca600955f30e130128b9aba1d38e9aa6472e5a2..0000000000000000000000000000000000000000
--- a/base/dist/COPYING_HDF
+++ /dev/null
@@ -1,88 +0,0 @@
-Copyright Notice and Statement for NCSA Hierarchical Data Format (HDF)
-Java Software Library and Utilities
-
-NCSA Hierarchical Data Format (HDF) Software Library and Utilities 
-Copyright 1988-2004, the Board of Trustees of the University of Illinois.
-Copyright 2007-2009, Center for Information Sciences and Databases, ETH Zurich, Switzerland.  
-All rights reserved.
-
-Contributors to the library: National Center for Supercomputing 
-Applications (NCSA) at the University of Illinois, Lawrence 
-Livermore Nationall Laboratory (LLNL), Sandia National Laboratories (SNL), 
-Los Alamos National Laboratory (LANL). Fortner Software, Unidata 
-Program Center (netCDF), The Independent JPEG Group (JPEG), 
-Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment 
-Corporation (DEC). Macintosh support contributed by Gregory L. Guerin.
-Center for Information Sciences and Databases, ETH Zurich, Switzerland
-
-The package 'glguerin':
-Copyright 1998, 1999 by Gregory L. Guerin.
-Redistribute or reuse only as described below.
-These files are from the MacBinary Toolkit for Java:
-   <http://www.amug.org/~glguerin/sw/#macbinary>
-and are redistributed by NCSA with permission of the author.
-
-This work was supported in part by a Cooperative Agreement with 
-NASA under NASA grant NAG 5-2040 and NAG NCC5-599.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted for any purpose (including commercial purposes)
-provided that the following conditions are met:
-
-1.  Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-
-2.  Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or materials provided with the distribution.
-
-3.  In addition, redistributions of modified forms of the source or binary
-    code must carry prominent notices stating that the original code was
-    changed and the date of the change.
-
-4.  All publications or advertising materials mentioning features or use of
-    this software must acknowledge that it was developed by the National
-    Center for Supercomputing Applications at the University of Illinois, and
-    credit the Contributors.
-
-5.  Neither the name of the University nor the names of the Contributors may
-    be used to endorse or promote products derived from this software without
-    specific prior written permission from the University or the Contributors.
-
-6.  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND THE CONTRIBUTORS "AS IS"
-    WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED.  In no event
-    shall the University or the Contributors be liable for any damages
-    suffered by the users arising out of the use of this software, even if
-    advised of the possibility of such damage.
-
---------------------------------------------------------------------------
-Portions of HDF5 were developed with support from the University of 
-California, Lawrence Livermore National Laboratory (UC LLNL).
-The following statement applies to those portions of the product
-and must be retained in any redistribution of source code, binaries,
-documentation, and/or accompanying materials:
-
-    This work was partially produced at the University of California,
-    Lawrence Livermore National Laboratory (UC LLNL) under contract no.
-    W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy 
-    (DOE) and The Regents of the University of California (University) 
-    for the operation of UC LLNL.
-
-    DISCLAIMER:
-    This work was prepared as an account of work sponsored by an agency 
-    of the United States Government.  Neither the United States 
-    Government nor the University of California nor any of their 
-    employees, makes any warranty, express or implied, or assumes any 
-    liability or responsibility for the accuracy, completeness, or 
-    usefulness of any information, apparatus, product, or process 
-    disclosed, or represents that its use would not infringe privately-
-    owned rights.  Reference herein to any specific commercial products, 
-    process, or service by trade name, trademark, manufacturer, or 
-    otherwise, does not necessarily constitute or imply its endorsement, 
-    recommendation, or favoring by the United States Government or the 
-    University of California.  The views and opinions of authors 
-    expressed herein do not necessarily state or reflect those of the 
-    United States Government or the University of California, and shall 
-    not be used for advertising or product endorsement purposes.
---------------------------------------------------------------------------
-
diff --git a/base/dist/LICENSE b/base/dist/LICENSE
deleted file mode 100644
index f820d4bd3a6072ed03f22499937d1e0c62f806ea..0000000000000000000000000000000000000000
--- a/base/dist/LICENSE
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- *                                 Apache License
- *                           Version 2.0, January 2004
- *                        http://www.apache.org/licenses/
- *
- *   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- *
- *   1. Definitions.
- *
- *      "License" shall mean the terms and conditions for use, reproduction,
- *      and distribution as defined by Sections 1 through 9 of this document.
- *
- *      "Licensor" shall mean the copyright owner or entity authorized by
- *      the copyright owner that is granting the License.
- *
- *      "Legal Entity" shall mean the union of the acting entity and all
- *      other entities that control, are controlled by, or are under common
- *      control with that entity. For the purposes of this definition,
- *      "control" means (i) the power, direct or indirect, to cause the
- *      direction or management of such entity, whether by contract or
- *      otherwise, or (ii) ownership of fifty percent (50%) or more of the
- *      outstanding shares, or (iii) beneficial ownership of such entity.
- *
- *      "You" (or "Your") shall mean an individual or Legal Entity
- *      exercising permissions granted by this License.
- *
- *      "Source" form shall mean the preferred form for making modifications,
- *      including but not limited to software source code, documentation
- *      source, and configuration files.
- *
- *      "Object" form shall mean any form resulting from mechanical
- *      transformation or translation of a Source form, including but
- *      not limited to compiled object code, generated documentation,
- *      and conversions to other media types.
- *
- *      "Work" shall mean the work of authorship, whether in Source or
- *      Object form, made available under the License, as indicated by a
- *      copyright notice that is included in or attached to the work
- *      (an example is provided in the Appendix below).
- *
- *      "Derivative Works" shall mean any work, whether in Source or Object
- *      form, that is based on (or derived from) the Work and for which the
- *      editorial revisions, annotations, elaborations, or other modifications
- *      represent, as a whole, an original work of authorship. For the purposes
- *      of this License, Derivative Works shall not include works that remain
- *      separable from, or merely link (or bind by name) to the interfaces of,
- *      the Work and Derivative Works thereof.
- *
- *      "Contribution" shall mean any work of authorship, including
- *      the original version of the Work and any modifications or additions
- *      to that Work or Derivative Works thereof, that is intentionally
- *      submitted to Licensor for inclusion in the Work by the copyright owner
- *      or by an individual or Legal Entity authorized to submit on behalf of
- *      the copyright owner. For the purposes of this definition, "submitted"
- *      means any form of electronic, verbal, or written communication sent
- *      to the Licensor or its representatives, including but not limited to
- *      communication on electronic mailing lists, source code control systems,
- *      and issue tracking systems that are managed by, or on behalf of, the
- *      Licensor for the purpose of discussing and improving the Work, but
- *      excluding communication that is conspicuously marked or otherwise
- *      designated in writing by the copyright owner as "Not a Contribution."
- *
- *      "Contributor" shall mean Licensor and any individual or Legal Entity
- *      on behalf of whom a Contribution has been received by Licensor and
- *      subsequently incorporated within the Work.
- *
- *   2. Grant of Copyright License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      copyright license to reproduce, prepare Derivative Works of,
- *      publicly display, publicly perform, sublicense, and distribute the
- *      Work and such Derivative Works in Source or Object form.
- *
- *   3. Grant of Patent License. Subject to the terms and conditions of
- *      this License, each Contributor hereby grants to You a perpetual,
- *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- *      (except as stated in this section) patent license to make, have made,
- *      use, offer to sell, sell, import, and otherwise transfer the Work,
- *      where such license applies only to those patent claims licensable
- *      by such Contributor that are necessarily infringed by their
- *      Contribution(s) alone or by combination of their Contribution(s)
- *      with the Work to which such Contribution(s) was submitted. If You
- *      institute patent litigation against any entity (including a
- *      cross-claim or counterclaim in a lawsuit) alleging that the Work
- *      or a Contribution incorporated within the Work constitutes direct
- *      or contributory patent infringement, then any patent licenses
- *      granted to You under this License for that Work shall terminate
- *      as of the date such litigation is filed.
- *
- *   4. Redistribution. You may reproduce and distribute copies of the
- *      Work or Derivative Works thereof in any medium, with or without
- *      modifications, and in Source or Object form, provided that You
- *      meet the following conditions:
- *
- *      (a) You must give any other recipients of the Work or
- *          Derivative Works a copy of this License; and
- *
- *      (b) You must cause any modified files to carry prominent notices
- *          stating that You changed the files; and
- *
- *      (c) You must retain, in the Source form of any Derivative Works
- *          that You distribute, all copyright, patent, trademark, and
- *          attribution notices from the Source form of the Work,
- *          excluding those notices that do not pertain to any part of
- *          the Derivative Works; and
- *
- *      (d) If the Work includes a "NOTICE" text file as part of its
- *          distribution, then any Derivative Works that You distribute must
- *          include a readable copy of the attribution notices contained
- *          within such NOTICE file, excluding those notices that do not
- *          pertain to any part of the Derivative Works, in at least one
- *          of the following places: within a NOTICE text file distributed
- *          as part of the Derivative Works; within the Source form or
- *          documentation, if provided along with the Derivative Works; or,
- *          within a display generated by the Derivative Works, if and
- *          wherever such third-party notices normally appear. The contents
- *          of the NOTICE file are for informational purposes only and
- *          do not modify the License. You may add Your own attribution
- *          notices within Derivative Works that You distribute, alongside
- *          or as an addendum to the NOTICE text from the Work, provided
- *          that such additional attribution notices cannot be construed
- *          as modifying the License.
- *
- *      You may add Your own copyright statement to Your modifications and
- *      may provide additional or different license terms and conditions
- *      for use, reproduction, or distribution of Your modifications, or
- *      for any such Derivative Works as a whole, provided Your use,
- *      reproduction, and distribution of the Work otherwise complies with
- *      the conditions stated in this License.
- *
- *   5. Submission of Contributions. Unless You explicitly state otherwise,
- *      any Contribution intentionally submitted for inclusion in the Work
- *      by You to the Licensor shall be under the terms and conditions of
- *      this License, without any additional terms or conditions.
- *      Notwithstanding the above, nothing herein shall supersede or modify
- *      the terms of any separate license agreement you may have executed
- *      with Licensor regarding such Contributions.
- *
- *   6. Trademarks. This License does not grant permission to use the trade
- *      names, trademarks, service marks, or product names of the Licensor,
- *      except as required for reasonable and customary use in describing the
- *      origin of the Work and reproducing the content of the NOTICE file.
- *
- *   7. Disclaimer of Warranty. Unless required by applicable law or
- *      agreed to in writing, Licensor provides the Work (and each
- *      Contributor provides its Contributions) on an "AS IS" BASIS,
- *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- *      implied, including, without limitation, any warranties or conditions
- *      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- *      PARTICULAR PURPOSE. You are solely responsible for determining the
- *      appropriateness of using or redistributing the Work and assume any
- *      risks associated with Your exercise of permissions under this License.
- *
- *   8. Limitation of Liability. In no event and under no legal theory,
- *      whether in tort (including negligence), contract, or otherwise,
- *      unless required by applicable law (such as deliberate and grossly
- *      negligent acts) or agreed to in writing, shall any Contributor be
- *      liable to You for damages, including any direct, indirect, special,
- *      incidental, or consequential damages of any character arising as a
- *      result of this License or out of the use or inability to use the
- *      Work (including but not limited to damages for loss of goodwill,
- *      work stoppage, computer failure or malfunction, or any and all
- *      other commercial damages or losses), even if such Contributor
- *      has been advised of the possibility of such damages.
- *
- *   9. Accepting Warranty or Additional Liability. While redistributing
- *      the Work or Derivative Works thereof, You may choose to offer,
- *      and charge a fee for, acceptance of support, warranty, indemnity,
- *      or other liability obligations and/or rights consistent with this
- *      License. However, in accepting such obligations, You may act only
- *      on Your own behalf and on Your sole responsibility, not on behalf
- *      of any other Contributor, and only if You agree to indemnify,
- *      defend, and hold each Contributor harmless for any liability
- *      incurred by, or claims asserted against, such Contributor by reason
- *      of your accepting any such warranty or additional liability.
- *
- *   END OF TERMS AND CONDITIONS
- *
- *   APPENDIX: How to apply the Apache License to your work.
- *
- *      To apply the Apache License to your work, attach the following
- *      boilerplate notice, with the fields enclosed by brackets "[]"
- *      replaced with your own identifying information. (Don't include
- *      the brackets!)  The text should be enclosed in the appropriate
- *      comment syntax for the file format. We also recommend that a
- *      file or class name and description of purpose be included on the
- *      same "printed page" as the copyright notice for easier
- *      identification within third-party archives.
- *
- *   Copyright [yyyy] [name of copyright owner]
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *   See the License for the specific language governing permissions and
- *   limitations under the License.
- */
diff --git a/base/doc/tagged_array_def.txt b/base/doc/tagged_array_def.txt
deleted file mode 100644
index 4fe98e2a0e1f3236465cd499d7b68a040fb40bf6..0000000000000000000000000000000000000000
--- a/base/doc/tagged_array_def.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-Tagged Array Definition:
-
-All indices and lengths are given in bytes.
-
-ID: number_type
-START INDEX: 0
-LENGTH: 1
-DESCRIPTION:
-    'F' : IEEE floating point numbers
-    'I' : Integer numbers
- 
-ID: endiness
-START INDEX: 1
-LENGTH: 1
-DESCRIPTION:
-    'L' : Little Endian
-    'B' : Big Endian
-
-ID: element_size
-START INDEX: 2
-LENGTH: 1
-DESCRIPTION:
-    Size in Bytes (e.g. 4 for a 32bit number, or 8 for a 64bit number)
-    
-ID: rank
-START INDEX: 3
-LENGTH: 1
-DESCRIPTION:
-    Rank of the array (e.g. 2 for a matrix or 3 for a cube)
-
-ID: dimensions
-START INDEX: 4
-LENGTH: 4 * rank
-DESCRIPTION:
-    Dimensions of the array along each axis; each entry is a 32bit (4 byte) integer number in the specified endiness
-
-ID: data
-START INDEX: 4 + 4 * rank
-LENGTH: prod(dimensions)
-DESCRIPTION:
-    Number array with prod(dimensions) elements in C row-major order; 
-    each element is a number of the specified number_type, endiness and element_size
-    
\ No newline at end of file
diff --git a/base/gradle/wrapper/gradle-wrapper.jar b/base/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index a0b6f5dee8d1efdd6f7fa26cc2663035abaec5b4..0000000000000000000000000000000000000000
Binary files a/base/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/base/gradle/wrapper/gradle-wrapper.properties b/base/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 5884b6b2efa4cafbfe13521d23b0602bea641da1..0000000000000000000000000000000000000000
--- a/base/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Tue Jun 13 15:27:00 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=http\://svnsis.ethz.ch/repos/cisd/ivy-repository/trunk/gradle/distribution/3.5/gradle-3.5-all.zip
diff --git a/base/gradlew b/base/gradlew
deleted file mode 100755
index 4453ccea33d960069d9137ee65f6b21fc65e7e92..0000000000000000000000000000000000000000
--- a/base/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save ( ) {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/base/gradlew.bat b/base/gradlew.bat
deleted file mode 100644
index e95643d6a2ca62258464e83c72f5156dc941c609..0000000000000000000000000000000000000000
--- a/base/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/base/libs/native/nativedata/amd64-Linux/libnativedata.so b/base/libs/native/nativedata/amd64-Linux/libnativedata.so
deleted file mode 100755
index 9b7f1b9d107365a85551ce5e5612e63234516343..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/amd64-Linux/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/amd64-SunOS/libnativedata.so b/base/libs/native/nativedata/amd64-SunOS/libnativedata.so
deleted file mode 100755
index 1044cd13902360e29c600fcf118ddc175d7629bb..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/amd64-SunOS/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/amd64-Windows/nativedata.dll b/base/libs/native/nativedata/amd64-Windows/nativedata.dll
deleted file mode 100755
index 5760aa37e5dc562f0eea908ea771ca212228c002..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/amd64-Windows/nativedata.dll and /dev/null differ
diff --git a/base/libs/native/nativedata/arm-Linux/libnativedata.so b/base/libs/native/nativedata/arm-Linux/libnativedata.so
deleted file mode 100755
index 6f85efe3ff18e914f9fe543d4b89ffe0f3d85860..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/arm-Linux/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/i386-Linux/libnativedata.so b/base/libs/native/nativedata/i386-Linux/libnativedata.so
deleted file mode 100755
index 256132f0306644d853c1682a7d456b28d5e45a2c..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/i386-Linux/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/i386-Mac OS X/libnativedata.jnilib b/base/libs/native/nativedata/i386-Mac OS X/libnativedata.jnilib
deleted file mode 100755
index 3271106a05e2e525c1196be5d4ac929dbc1a8c2c..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/i386-Mac OS X/libnativedata.jnilib and /dev/null differ
diff --git a/base/libs/native/nativedata/sparc-SunOS/libnativedata.so b/base/libs/native/nativedata/sparc-SunOS/libnativedata.so
deleted file mode 100755
index 2a7bb7ff6ddc06502fa332c0d6b55054f058f128..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/sparc-SunOS/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/sparcv9-SunOS/libnativedata.so b/base/libs/native/nativedata/sparcv9-SunOS/libnativedata.so
deleted file mode 100755
index 397cfdb34d5df9e80eec3dc01659dda25b88dea2..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/sparcv9-SunOS/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/x86-SunOS/libnativedata.so b/base/libs/native/nativedata/x86-SunOS/libnativedata.so
deleted file mode 100755
index 85a7fa6f4fcb80cf514b7b12f6ff1172ff110df4..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/x86-SunOS/libnativedata.so and /dev/null differ
diff --git a/base/libs/native/nativedata/x86-Windows/nativedata.dll b/base/libs/native/nativedata/x86-Windows/nativedata.dll
deleted file mode 100755
index f4cdef827a04e6ffda1c9aad25e7db689e482d31..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/x86-Windows/nativedata.dll and /dev/null differ
diff --git a/base/libs/native/nativedata/x86_64-Mac OS X/libnativedata.jnilib b/base/libs/native/nativedata/x86_64-Mac OS X/libnativedata.jnilib
deleted file mode 100755
index 1720db0f9441d2c79054e76dfa8024c74499f286..0000000000000000000000000000000000000000
Binary files a/base/libs/native/nativedata/x86_64-Mac OS X/libnativedata.jnilib and /dev/null differ
diff --git a/base/libs/native/unix/amd64-Linux/libunix.so b/base/libs/native/unix/amd64-Linux/libunix.so
deleted file mode 100755
index 7c6cce3f9efa5dce78d4cdc6cc88ffc4f21b85ce..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/amd64-Linux/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/amd64-SunOS/libunix.so b/base/libs/native/unix/amd64-SunOS/libunix.so
deleted file mode 100755
index e4a0e21ccbc62c8dc15397a2eb77b6e6f4bcf638..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/amd64-SunOS/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/arm-Linux/libunix.so b/base/libs/native/unix/arm-Linux/libunix.so
deleted file mode 100755
index 614fc465f854632f37dbdafa71ed3e514fc6f80f..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/arm-Linux/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/i386-Linux/libunix.so b/base/libs/native/unix/i386-Linux/libunix.so
deleted file mode 100755
index 2c852cfe6c2dcaa34bf7b86e3af3ecbdf9a4e71e..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/i386-Linux/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/i386-Mac OS X/libunix.jnilib b/base/libs/native/unix/i386-Mac OS X/libunix.jnilib
deleted file mode 100755
index d57021ba5f77eccff3f5b01ba3c6cae7992954df..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/i386-Mac OS X/libunix.jnilib and /dev/null differ
diff --git a/base/libs/native/unix/sparc-SunOS/libunix.so b/base/libs/native/unix/sparc-SunOS/libunix.so
deleted file mode 100755
index 6ec3d73a94ba09b3708c615da35d24976c73c809..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/sparc-SunOS/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/sparcv9-SunOS/libunix.so b/base/libs/native/unix/sparcv9-SunOS/libunix.so
deleted file mode 100755
index 491a63d2316766d1b0674f8b9971dfa6f4ee7eb5..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/sparcv9-SunOS/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/x86-SunOS/libunix.so b/base/libs/native/unix/x86-SunOS/libunix.so
deleted file mode 100755
index 787c37a62544eb8465b9fd5bea8ec4ff60979e81..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/x86-SunOS/libunix.so and /dev/null differ
diff --git a/base/libs/native/unix/x86_64-Mac OS X/libunix.jnilib b/base/libs/native/unix/x86_64-Mac OS X/libunix.jnilib
deleted file mode 100755
index bfaa2057c2769c7a8f9facd9b02130d9e761e4a6..0000000000000000000000000000000000000000
Binary files a/base/libs/native/unix/x86_64-Mac OS X/libunix.jnilib and /dev/null differ
diff --git a/base/resource/dependency-structure.ddf b/base/resource/dependency-structure.ddf
deleted file mode 100644
index b463616bf426ecbb987f282ab6b0f3d5f95fc1fe..0000000000000000000000000000000000000000
--- a/base/resource/dependency-structure.ddf
+++ /dev/null
@@ -1,6 +0,0 @@
-{package} = ch.systemsx.cisd.base
-
-layer exceptions = ${package}.exceptions
-layer rest = ${package}.mdarray ${package}.namedthread ${package}.unix ${package}.utilities
-
-check layeringOf exceptions rest
\ No newline at end of file
diff --git a/base/settings.gradle b/base/settings.gradle
deleted file mode 100644
index 8062ac25691000178f94b7d9fc1091ef3700f632..0000000000000000000000000000000000000000
--- a/base/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-// Don't delete it eventough it is empty!
diff --git a/base/source/c/COPYING b/base/source/c/COPYING
deleted file mode 100644
index 7ca600955f30e130128b9aba1d38e9aa6472e5a2..0000000000000000000000000000000000000000
--- a/base/source/c/COPYING
+++ /dev/null
@@ -1,88 +0,0 @@
-Copyright Notice and Statement for NCSA Hierarchical Data Format (HDF)
-Java Software Library and Utilities
-
-NCSA Hierarchical Data Format (HDF) Software Library and Utilities 
-Copyright 1988-2004, the Board of Trustees of the University of Illinois.
-Copyright 2007-2009, Center for Information Sciences and Databases, ETH Zurich, Switzerland.  
-All rights reserved.
-
-Contributors to the library: National Center for Supercomputing 
-Applications (NCSA) at the University of Illinois, Lawrence 
-Livermore Nationall Laboratory (LLNL), Sandia National Laboratories (SNL), 
-Los Alamos National Laboratory (LANL). Fortner Software, Unidata 
-Program Center (netCDF), The Independent JPEG Group (JPEG), 
-Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment 
-Corporation (DEC). Macintosh support contributed by Gregory L. Guerin.
-Center for Information Sciences and Databases, ETH Zurich, Switzerland
-
-The package 'glguerin':
-Copyright 1998, 1999 by Gregory L. Guerin.
-Redistribute or reuse only as described below.
-These files are from the MacBinary Toolkit for Java:
-   <http://www.amug.org/~glguerin/sw/#macbinary>
-and are redistributed by NCSA with permission of the author.
-
-This work was supported in part by a Cooperative Agreement with 
-NASA under NASA grant NAG 5-2040 and NAG NCC5-599.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted for any purpose (including commercial purposes)
-provided that the following conditions are met:
-
-1.  Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-
-2.  Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or materials provided with the distribution.
-
-3.  In addition, redistributions of modified forms of the source or binary
-    code must carry prominent notices stating that the original code was
-    changed and the date of the change.
-
-4.  All publications or advertising materials mentioning features or use of
-    this software must acknowledge that it was developed by the National
-    Center for Supercomputing Applications at the University of Illinois, and
-    credit the Contributors.
-
-5.  Neither the name of the University nor the names of the Contributors may
-    be used to endorse or promote products derived from this software without
-    specific prior written permission from the University or the Contributors.
-
-6.  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND THE CONTRIBUTORS "AS IS"
-    WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED.  In no event
-    shall the University or the Contributors be liable for any damages
-    suffered by the users arising out of the use of this software, even if
-    advised of the possibility of such damage.
-
---------------------------------------------------------------------------
-Portions of HDF5 were developed with support from the University of 
-California, Lawrence Livermore National Laboratory (UC LLNL).
-The following statement applies to those portions of the product
-and must be retained in any redistribution of source code, binaries,
-documentation, and/or accompanying materials:
-
-    This work was partially produced at the University of California,
-    Lawrence Livermore National Laboratory (UC LLNL) under contract no.
-    W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy 
-    (DOE) and The Regents of the University of California (University) 
-    for the operation of UC LLNL.
-
-    DISCLAIMER:
-    This work was prepared as an account of work sponsored by an agency 
-    of the United States Government.  Neither the United States 
-    Government nor the University of California nor any of their 
-    employees, makes any warranty, express or implied, or assumes any 
-    liability or responsibility for the accuracy, completeness, or 
-    usefulness of any information, apparatus, product, or process 
-    disclosed, or represents that its use would not infringe privately-
-    owned rights.  Reference herein to any specific commercial products, 
-    process, or service by trade name, trademark, manufacturer, or 
-    otherwise, does not necessarily constitute or imply its endorsement, 
-    recommendation, or favoring by the United States Government or the 
-    University of California.  The views and opinions of authors 
-    expressed herein do not necessarily state or reflect those of the 
-    United States Government or the University of California, and shall 
-    not be used for advertising or product endorsement purposes.
---------------------------------------------------------------------------
-
diff --git a/base/source/c/compile_linux_amd64.sh b/base/source/c/compile_linux_amd64.sh
deleted file mode 100755
index 038f83a94355d54bd5b58005f6d361e77520cf18..0000000000000000000000000000000000000000
--- a/base/source/c/compile_linux_amd64.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-gcc -shared -O3 -fPIC unix.c -I/usr/java/jdk1.6.0/include -I/usr/java/jdk1.6.0/include/linux -o libunix.so
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-gcc -shared -O3 -fPIC -DMACHINE_BYTE_ORDER=1 copy*.c  -I/usr/java/jdk1.6.0/include -I/usr/java/jdk1.6.0/include/linux -o libnativedata.so
diff --git a/base/source/c/compile_linux_arm.sh b/base/source/c/compile_linux_arm.sh
deleted file mode 100755
index 2b57024ba736efbd4379cc7cb0ad576896ea2415..0000000000000000000000000000000000000000
--- a/base/source/c/compile_linux_arm.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-gcc -shared -O3 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/jdk1.7.0/include -I/usr/java/jdk1.7.0/include/linux unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-gcc -shared -O3 -fPIC -DMACHINE_BYTE_ORDER=1 copy*.c  -I/usr/java/jdk1.7.0/include -I/usr/java/jdk1.7.0/include/linux -o libnativedata.so
diff --git a/base/source/c/compile_linux_i386.sh b/base/source/c/compile_linux_i386.sh
deleted file mode 100755
index e9cb84047aded7fb2caa021726b94df71e6d7571..0000000000000000000000000000000000000000
--- a/base/source/c/compile_linux_i386.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-gcc -m32 -shared -O3 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/jdk1.6.0/include -I/usr/java/jdk1.6.0/include/linux unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-gcc -m32 -shared -O3 -fPIC -DMACHINE_BYTE_ORDER=1 copy*.c  -I/usr/java/jdk1.6.0/include -I/usr/java/jdk1.6.0/include/linux -o libnativedata.so
diff --git a/base/source/c/compile_macosx_i386.sh b/base/source/c/compile_macosx_i386.sh
deleted file mode 100755
index e8f53457bddf98aafddb451d27a80b0ed6992eb9..0000000000000000000000000000000000000000
--- a/base/source/c/compile_macosx_i386.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-gcc -m32 -mmacosx-version-min=10.6 -bundle -O3 unix.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libunix.jnilib
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-gcc -m32 -mmacosx-version-min=10.6 -bundle -O3 -DMACHINE_BYTE_ORDER=1 copy*.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libnativedata.jnilib
diff --git a/base/source/c/compile_macosx_x86_64.sh b/base/source/c/compile_macosx_x86_64.sh
deleted file mode 100755
index ec2d73640f9ccd5d0f48da7de977086722c2d9a3..0000000000000000000000000000000000000000
--- a/base/source/c/compile_macosx_x86_64.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-gcc -m64 -mmacosx-version-min=10.6 -dynamiclib -D_DARWIN_USE_64_BIT_INODE -O3 unix.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libunix.jnilib
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-gcc -m64 -mmacosx-version-min=10.6 -dynamiclib -O3 -DMACHINE_BYTE_ORDER=1 copy*.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libnativedata.jnilib
diff --git a/base/source/c/compile_solaris_amd64.sh b/base/source/c/compile_solaris_amd64.sh
deleted file mode 100755
index 16c3ac9bfaef12f0191fe77c2cab905c71b64710..0000000000000000000000000000000000000000
--- a/base/source/c/compile_solaris_amd64.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-cc -G -KPIC -fast -m64 -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-cc -G -KPIC -fast -m64 -DMACHINE_BYTE_ORDER=1 copy*.c  -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so
diff --git a/base/source/c/compile_solaris_sparc.sh b/base/source/c/compile_solaris_sparc.sh
deleted file mode 100755
index 99e2dd295b18dd968aeea123fd01a71a10f82705..0000000000000000000000000000000000000000
--- a/base/source/c/compile_solaris_sparc.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-cc -G -KPIC -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=2 corresponds to 'big endian'
-cc -G -KPIC -DMACHINE_BYTE_ORDER=2 copy*.c  -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so
diff --git a/base/source/c/compile_solaris_sparcv9.sh b/base/source/c/compile_solaris_sparcv9.sh
deleted file mode 100755
index 37852b48b737b56900821ff21afb0109076f4cb8..0000000000000000000000000000000000000000
--- a/base/source/c/compile_solaris_sparcv9.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-cc -G -KPIC -fast -m64 -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=2 corresponds to 'big endian'
-cc -G -KPIC -fast -m64 -DMACHINE_BYTE_ORDER=2 copy*.c  -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so
diff --git a/base/source/c/compile_solaris_x86.sh b/base/source/c/compile_solaris_x86.sh
deleted file mode 100755
index 588e192f6b6ac6fbe8754e164420d36aa795c47a..0000000000000000000000000000000000000000
--- a/base/source/c/compile_solaris_x86.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/bash
-
-cc -G -KPIC -fast -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so
-
-# MACHINE_BYTE_ORDER=1 corresponds to 'little endian'
-cc -G -KPIC -fast -DMACHINE_BYTE_ORDER=1 copy*.c  -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so
diff --git a/base/source/c/compile_windows_i386.mak b/base/source/c/compile_windows_i386.mak
deleted file mode 100644
index 8ebb900566b84eae08116fc446f920388b9a90a8..0000000000000000000000000000000000000000
--- a/base/source/c/compile_windows_i386.mak
+++ /dev/null
@@ -1,181 +0,0 @@
-#============================================================================
-#
-#              Makefile to compile the 'nativedata' native library
-#              Usage: nmake /f compile_windows_i386.mak
-#
-#============================================================================
-
-# Visual C++ directory, for example
-VCPPDIR=C:\Program Files\Microsoft Visual Studio 9.0\VC
-
-# Directory where JDK is installed (We require JDK 1.6)
-JAVADIR=C:\Program Files\Java\jdk1.6.0_37
-
-# Common parent directory
-PARENTDIR=C:\nativeData
-
-# Directory of the HDF Java Products, for example
-SRCDIR=$(PARENTDIR)\c\
-
-#===========================================================================
-#   Do not make any change below this line unless you know what you do
-#===========================================================================
-PATH=$(PATH);$(VCPPDIR)\BIN
-SRCDIR=$(SRCDIR)
-
-VALID_PATH_SET=YES
-#-------------------------------------------------------
-# Test if all path is valid
-
-!IF EXISTS("$(VCPPDIR)")
-!ELSE
-!MESSAGE ERROR: Visual C++ directory $(VCPPDIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-!IF EXISTS("$(JAVADIR)")
-!ELSE
-!MESSAGE ERROR: JDK directory $(JAVADIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-!IF EXISTS("$(SRCDIR)")
-!ELSE
-!MESSAGE ERROR: C source directory $(SRCDIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-#-------------------------------------------------------
-
-
-!IF "$(VALID_PATH_SET)" == "YES"
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-INTDIR=.\nativedata\Release
-OUTDIR=$(SRCDIR)\lib\win
-
-INCLUDES =  \
-	"$(JAVADIR)\include\jni.h" \
-	"$(JAVADIR)\include\win32\jni_md.h"
-
-
-ALL : "$(OUTDIR)\nativedata.dll"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /W3 /EHsc /O2 /I "$(JAVADIR)\include" /I "$(JAVADIR)\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "MACHINE_BYTE_ORDER=1" /Fp"$(INTDIR)\nativedata.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\nativedata.bsc" 
-BSC32_SBRS= \
-	
-LINK=link.exe
-LINK_FLAGS=/nologo /dll /nodefaultlib:msvcrt /incremental:no /pdb:"$(INTDIR)\nativedata.pdb" /machine:I386 /out:"$(OUTDIR)\nativedata.dll" /implib:"$(INTDIR)\nativedata.lib" 
-LINK_OBJS= \
-	"$(INTDIR)\copyCommon.obj" \
-	"$(INTDIR)\copyByteDouble.obj" \
-	"$(INTDIR)\copyByteFloat.obj" \
-	"$(INTDIR)\copyByteInt.obj" \
-	"$(INTDIR)\copyByteLong.obj" \
-	"$(INTDIR)\copyByteShort.obj" \
-	"$(INTDIR)\copyByteChar.obj"
-
-"$(OUTDIR)\nativedata.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK_OBJS)
-    $(LINK) @<<
-  $(LINK_FLAGS) $(LINK_OBJS)
-<<
-
-
-SOURCE=$(SRCDIR)\copyCommon.c
-
-"$(INTDIR)\copyCommon.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=$(SRCDIR)\copyByteDouble.c
-
-"$(INTDIR)\copyByteDouble.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteFloat.c
-
-"$(INTDIR)\copyByteFloat.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteInt.c
-
-"$(INTDIR)\copyByteInt.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteLong.c
-
-"$(INTDIR)\copyByteLong.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteShort.c
-
-"$(INTDIR)\copyByteShort.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteChar.c
-
-"$(INTDIR)\copyByteChar.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-CLEAN :
-	-@erase "$(INTDIR)\copyCommon.obj"
-	-@erase "$(INTDIR)\copyByteDouble.obj"
-	-@erase "$(INTDIR)\copyByteFloat.obj"
-	-@erase "$(INTDIR)\copyByteInt.obj"
-	-@erase "$(INTDIR)\copyByteLong.obj"
-	-@erase "$(INTDIR)\copyByteShort.obj"
-	-@erase "$(INTDIR)\copyByteChar.obj"
-	-@erase "$(INTDIR)\vc90.idb"
-	-@erase "$(INTDIR)\nativedata.exp"
-	-@erase "$(INTDIR)\nativedata.lib"
-	-@erase "$(OUTDIR)\nativedata.dll"
-
-!ENDIF
diff --git a/base/source/c/compile_windows_x64.mak b/base/source/c/compile_windows_x64.mak
deleted file mode 100644
index 52f71d7f8911fb9d152beec7b3293aff030270d0..0000000000000000000000000000000000000000
--- a/base/source/c/compile_windows_x64.mak
+++ /dev/null
@@ -1,182 +0,0 @@
-#============================================================================
-#
-#              Makefile to compile the 'nativedata' native library
-#              Usage: nmake /f compile_windows_i386.mak
-#
-#============================================================================
-
-# Visual C++ directory, for example
-VCPPDIR=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
-
-# Directory where JDK is installed (We require JDK 1.6)
-JAVADIR=C:\Program Files\Java\jdk1.6.0_37
-
-# Common parent directory
-PARENTDIR=C:\nativeData
-
-# Directory of the HDF Java Products, for example
-SRCDIR=$(PARENTDIR)\c\
-
-#===========================================================================
-#   Do not make any change below this line unless you know what you do
-#===========================================================================
-PATH=$(PATH);$(VCPPDIR)\BIN
-SRCDIR=$(SRCDIR)
-
-VALID_PATH_SET=YES
-#-------------------------------------------------------
-# Test if all path is valid
-
-!IF EXISTS("$(VCPPDIR)")
-!ELSE
-!MESSAGE ERROR: Visual C++ directory $(VCPPDIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-!IF EXISTS("$(JAVADIR)")
-!ELSE
-!MESSAGE ERROR: JDK directory $(JAVADIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-!IF EXISTS("$(SRCDIR)")
-!ELSE
-!MESSAGE ERROR: C source directory $(SRCDIR) does not exist
-VALID_PATH_SET=NO 
-!ENDIF
-
-#-------------------------------------------------------
-
-
-!IF "$(VALID_PATH_SET)" == "YES"
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-INTDIR=.\nativedata\Release
-OUTDIR=$(SRCDIR)\lib\win
-
-INCLUDES =  \
-	"$(JAVADIR)\include\jni.h" \
-	"$(JAVADIR)\include\win32\jni_md.h"
-
-
-ALL : "$(OUTDIR)\nativedata.dll"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /W3 /EHsc /O2 /I "$(JAVADIR)\include" /I "$(JAVADIR)\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "MACHINE_BYTE_ORDER=1" /Fp"$(INTDIR)\nativedata.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\nativedata.bsc" 
-BSC32_SBRS= \
-	
-LINK=link.exe
-LINK_FLAGS=/nologo /dll /nodefaultlib:msvcrt /incremental:no /pdb:"$(INTDIR)\nativedata.pdb" /machine:x64 /out:"$(OUTDIR)\nativedata.dll" /implib:"$(INTDIR)\nativedata.lib" 
-LINK_OBJS= \
-	"$(INTDIR)\copyCommon.obj" \
-	"$(INTDIR)\copyByteDouble.obj" \
-	"$(INTDIR)\copyByteFloat.obj" \
-	"$(INTDIR)\copyByteInt.obj" \
-	"$(INTDIR)\copyByteLong.obj" \
-	"$(INTDIR)\copyByteShort.obj" \
-	"$(INTDIR)\copyByteChar.obj"
-
-
-"$(OUTDIR)\nativedata.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK_OBJS)
-    $(LINK) @<<
-  $(LINK_FLAGS) $(LINK_OBJS)
-<<
-
-
-SOURCE=$(SRCDIR)\copyCommon.c
-
-"$(INTDIR)\copyCommon.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=$(SRCDIR)\copyByteDouble.c
-
-"$(INTDIR)\copyByteDouble.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteFloat.c
-
-"$(INTDIR)\copyByteFloat.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteInt.c
-
-"$(INTDIR)\copyByteInt.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteLong.c
-
-"$(INTDIR)\copyByteLong.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteShort.c
-
-"$(INTDIR)\copyByteShort.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-SOURCE=$(SRCDIR)\copyByteChar.c
-
-"$(INTDIR)\copyByteChar.obj" : $(SOURCE) $(INCLUDES) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-CLEAN :
-	-@erase "$(INTDIR)\copyCommon.obj"
-	-@erase "$(INTDIR)\copyByteDouble.obj"
-	-@erase "$(INTDIR)\copyByteFloat.obj"
-	-@erase "$(INTDIR)\copyByteInt.obj"
-	-@erase "$(INTDIR)\copyByteLong.obj"
-	-@erase "$(INTDIR)\copyByteShort.obj"
-	-@erase "$(INTDIR)\copyByteChar.obj"
-	-@erase "$(INTDIR)\vc90.idb"
-	-@erase "$(INTDIR)\nativedata.exp"
-	-@erase "$(INTDIR)\nativedata.lib"
-	-@erase "$(OUTDIR)\nativedata.dll"
-
-!ENDIF
diff --git a/base/source/c/copyByteChar.c b/base/source/c/copyByteChar.c
deleted file mode 100644
index 02b8a17990a62c0db983dd0e327f2d1e6b822d65..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteChar.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jchar
-#define TARGET_ARRAY jcharArray
-#define METHODNAMETB "copyCharToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyCharToByte___3CI_3BIII
-#define METHODNAMEBT "copyByteToChar"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToChar___3BI_3CIII
-#define COPY_FUNC GetCharArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_2
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteDouble.c b/base/source/c/copyByteDouble.c
deleted file mode 100644
index 734d7399ba704fb3d343b1c6d07c45fc8d80fbe3..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteDouble.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, double, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jdouble
-#define TARGET_ARRAY jdoubleArray
-#define METHODNAMETB "copyDoubleToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyDoubleToByte___3DI_3BIII
-#define METHODNAMEBT "copyByteToDouble"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToDouble___3BI_3DIII
-#define COPY_FUNC GetDoubleArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_8
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteFloat.c b/base/source/c/copyByteFloat.c
deleted file mode 100644
index 797a818a67bd8f361e40205eaf0c36681ae78d64..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteFloat.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jfloat
-#define TARGET_ARRAY jfloatArray
-#define METHODNAMETB "copyFloatToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyFloatToByte___3FI_3BIII
-#define METHODNAMEBT "copyByteToFloat"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToFloat___3BI_3FIII
-#define COPY_FUNC GetFloatArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_4
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteInt.c b/base/source/c/copyByteInt.c
deleted file mode 100644
index 422754671c60f927c1bdc34decd0c1d2fe1978a4..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteInt.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jint
-#define TARGET_ARRAY jintArray
-#define METHODNAMETB "copyIntToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyIntToByte___3II_3BIII
-#define METHODNAMEBT "copyByteToInt"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToInt___3BI_3IIII
-#define COPY_FUNC GetIntArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_4
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteLong.c b/base/source/c/copyByteLong.c
deleted file mode 100644
index c28352f2e6d2692d32f2d9d60d8695c97b72614d..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteLong.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jlong
-#define TARGET_ARRAY jlongArray
-#define METHODNAMETB "copyLongToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyLongToByte___3JI_3BIII
-#define METHODNAMEBT "copyByteToLong"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToLong___3BI_3JIII
-#define COPY_FUNC GetLongArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_8
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteShort.c b/base/source/c/copyByteShort.c
deleted file mode 100644
index 5081ab739910480dcfd0c8ab269f8a2e0a965ed9..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteShort.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#define TARGET jshort
-#define TARGET_ARRAY jshortArray
-#define METHODNAMETB "copyShortToByte"
-#define FUNCTIONNAMETB Java_ch_systemsx_cisd_base_convert_NativeData_copyShortToByte___3SI_3BIII
-#define METHODNAMEBT "copyByteToShort"
-#define FUNCTIONNAMEBT Java_ch_systemsx_cisd_base_convert_NativeData_copyByteToShort___3BI_3SIII
-#define COPY_FUNC GetShortArrayRegion
-#define CHANGE_BYTE_ORDER CHANGE_BYTE_ORDER_2
-
-#include "copyByteTarget.ctempl"
diff --git a/base/source/c/copyByteTarget.ctempl b/base/source/c/copyByteTarget.ctempl
deleted file mode 100644
index 7d9b8d205bb2f8b0c6b678daa5621ce5f3e4ec7b..0000000000000000000000000000000000000000
--- a/base/source/c/copyByteTarget.ctempl
+++ /dev/null
@@ -1,241 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                  *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This module contains the implementation of all the native methods
- *  used for number conversion.  This is represented by the Java
- *  class HDFNativeData.
- *
- *  These routines convert one dimensional arrays of bytes into
- *  one-D arrays of other types (int, float, etc) and vice versa.
- *
- *  These routines are called from the Java parts of the Java-C
- *  interface.
- *
- *  ***Important notes:
- *
- *     1.  These routines are designed to be portable--they use the
- *         C compiler to do the required native data manipulation.
- *     2.  These routines copy the data at least once -- a serious
- *         but unavoidable performance hit.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <jni.h>
-
-extern jboolean h5JNIFatalError( JNIEnv *env, char *functName);
-extern jboolean h5nullArgument( JNIEnv *env, char *functName);
-extern jboolean h5badArgument( JNIEnv *env, char *functName);
-extern jboolean h5indexOutOfBounds( JNIEnv *env, char *functName);
-
-/* Change byte order for data type of length 2. */
-#define CHANGE_BYTE_ORDER_2(ARRAY) {jbyte _tmp; _tmp=ARRAY[0]; ARRAY[0]=ARRAY[1]; ARRAY[1]=_tmp;}
-/* Change byte order for data type of length 4. */
-#define CHANGE_BYTE_ORDER_4(ARRAY) {jbyte _tmp; _tmp=ARRAY[0]; ARRAY[0]=ARRAY[3]; ARRAY[3]=_tmp; _tmp=ARRAY[1]; ARRAY[1]=ARRAY[2]; ARRAY[2]=_tmp;}
-/* Change byte order for data type of length 8. */
-#define CHANGE_BYTE_ORDER_8(ARRAY) {jbyte _tmp; _tmp=ARRAY[0]; ARRAY[0]=ARRAY[7]; ARRAY[7]=_tmp; _tmp=ARRAY[1]; ARRAY[1]=ARRAY[6]; ARRAY[6]=_tmp; _tmp=ARRAY[2]; ARRAY[2]=ARRAY[5]; ARRAY[5]=_tmp; _tmp=ARRAY[3]; ARRAY[3]=ARRAY[4]; ARRAY[4]=_tmp;}
-
-#define INDATA_IS_NULL_ERR_TB METHODNAMETB ": inData is NULL"
-#define OUTDATA_IS_NULL_ERR_TB METHODNAMETB ": outData is NULL"
-#define OOB_IN_ERR_TB METHODNAMETB ": inStart or len is out of bounds"
-#define OOB_OUT_ERR_TB METHODNAMETB ": outStart or len is out of bounds"
-#define PINNING_OUT_ERR_TB METHODNAMETB ": pinning outArray failed"
-
-#define INDATA_IS_NULL_ERR_BT METHODNAMEBT ": inData is NULL"
-#define OUTDATA_IS_NULL_ERR_BT METHODNAMEBT ": outData is NULL"
-#define OOB_IN_ERR_BT METHODNAMEBT ": inStart or len is out of bounds"
-#define OOB_OUT_ERR_BT METHODNAMEBT ": outStart or len is out of bounds"
-#define PINNING_OUT_ERR_BT METHODNAMEBT ": pinning outArray failed"
-
-/*
- *   public static native void copy<TARGET_CAPT>oByte(<TARGET>[] inData, int inStart, 
- *                                byte[] outData, int outStart, int len, int byteOrder);
- */
-JNIEXPORT void JNICALL FUNCTIONNAMETB
-(JNIEnv *env,
-  jclass clss,
-  TARGET_ARRAY inData, /* IN: array of TARGET */
-  jint inStart,
-  jbyteArray outData, /* OUT: array of byte */
-  jint outStart,
-  jint len,
-  jint byteOrder
-)  
-{
-    jsize inSize, outSize;
-    jint lenInBytes;
-    jbyte *outArray;
-    jboolean isCopy;
-
-    if (inData == NULL) {
-        h5nullArgument(env, INDATA_IS_NULL_ERR_BT);
-        return;
-    }
-
-    if (outData == NULL) {
-        h5nullArgument(env, OUTDATA_IS_NULL_ERR_TB);
-        return;
-    }
-
-    lenInBytes = len * sizeof(TARGET);
-
-#ifdef __cplusplus
-    inSize = env->GetArrayLength(inData);
-#else
-    inSize = (*env)->GetArrayLength(env, inData);
-#endif
-    if ((inStart < 0) || (inStart + len > inSize)) {
-        h5indexOutOfBounds(env, OOB_IN_ERR_TB);
-        return;
-    }
-
-#ifdef __cplusplus
-    outSize = env->GetArrayLength(outData);
-#else
-    outSize = (*env)->GetArrayLength(env, outData);
-#endif
-    if ((outStart < 0) || (outStart + lenInBytes > outSize)) {
-        h5indexOutOfBounds(env, OOB_OUT_ERR_TB);
-        return;
-    }
-
-#ifdef __cplusplus
-    outArray = env->GetPrimitiveArrayCritical(outData, &isCopy);
-#else
-    outArray = (*env)->GetPrimitiveArrayCritical(env, outData, &isCopy);
-#endif
-    if (outArray == NULL) {
-        h5JNIFatalError(env, PINNING_OUT_ERR_TB);
-        return;
-    }
-
-#ifdef __cplusplus
-    env->COPY_FUNC(inData, inStart, len, (TARGET*) (outArray + outStart));
-#else
-    (*env)->COPY_FUNC(env, inData, inStart, len, (TARGET*) (outArray + outStart));
-#endif
-
-    if (byteOrder > 0 && byteOrder != MACHINE_BYTE_ORDER)
-    {
-        jbyte *buf = outArray + outStart;
-        int nelmts;
-        for(nelmts = 0; nelmts < len; ++nelmts)
-        {
-            CHANGE_BYTE_ORDER(buf);
-            buf += sizeof(TARGET);
-        } 
-    }
-
-#ifdef __cplusplus
-    env->ReleasePrimitiveArrayCritical(outData, outArray, 0);
-#else
-    (*env)->ReleasePrimitiveArrayCritical(env, outData,outArray, 0);
-#endif
-
-    return;
-}
-
-/*
- *   public static native void copyByteTo<TARGET_CAP>(byte[] inData, int inStart, 
- *                                TARGET[] outData, int outStart, int len, int byteOrder);
- */
-JNIEXPORT void JNICALL FUNCTIONNAMEBT
-(JNIEnv *env,
-  jclass clss,
-  jbyteArray inData, /* IN: array of byte */
-  jint inStart,
-  TARGET_ARRAY outData, /* OUT: array of TAGET */
-  jint outStart,
-  jint len,
-  jint byteOrder
-  )  
-{
-    jsize inSize, outSize;
-    jint lenInBytes;
-    TARGET *outArray;
-    jboolean isCopy;
-
-    if (inData == NULL) {
-        h5nullArgument(env, INDATA_IS_NULL_ERR_BT);
-        return;
-    }
-
-    if (outData == NULL) {
-        h5nullArgument(env, OUTDATA_IS_NULL_ERR_BT);
-        return;
-    }
-
-    lenInBytes = len * sizeof(TARGET);
-
-#ifdef __cplusplus
-    inSize = env->GetArrayLength(inData);
-#else
-    inSize = (*env)->GetArrayLength(env, inData);
-#endif
-    if ((inStart < 0) || (inStart + lenInBytes > inSize)) {
-        h5indexOutOfBounds(env, OOB_IN_ERR_BT);
-        return;
-    }
-
-#ifdef __cplusplus
-    outSize = env->GetArrayLength(outData);
-#else
-    outSize = (*env)->GetArrayLength(env, outData);
-#endif
-    if ((outStart < 0) || (outStart + len > outSize)) {
-        h5indexOutOfBounds(env, OOB_OUT_ERR_BT);
-        return;
-    }
-
-#ifdef __cplusplus
-    outArray = env->GetPrimitiveArrayCritical(outData, &isCopy);
-#else
-    outArray = (*env)->GetPrimitiveArrayCritical(env, outData, &isCopy);
-#endif
-    if (outArray == NULL) {
-        h5JNIFatalError(env, PINNING_OUT_ERR_BT);
-        return;
-    }
-
-#ifdef __cplusplus
-    env->GetByteArrayRegion(inData, inStart, lenInBytes, outArray + outStart);
-#else
-    (*env)->GetByteArrayRegion(env, inData, inStart, lenInBytes, (jbyte*) (outArray + outStart));
-#endif
-
-    if (byteOrder > 0 && byteOrder != MACHINE_BYTE_ORDER)
-    {
-        jbyte *buf = (jbyte*) outArray + outStart;
-        int nelmts;
-        for(nelmts = 0; nelmts < len; ++nelmts)
-        {
-            CHANGE_BYTE_ORDER(buf);
-            buf += sizeof(TARGET);
-        } 
-    }
-
-#ifdef __cplusplus
-    env->ReleasePrimitiveArrayCritical(outData, outArray, 0);
-#else
-    (*env)->ReleasePrimitiveArrayCritical(env, outData, outArray, 0);
-#endif
-
-    return;
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/base/source/c/copyCommon.c b/base/source/c/copyCommon.c
deleted file mode 100755
index 40a0278b7590e9c92ff55ef06d8ef7ab1eb50fcd..0000000000000000000000000000000000000000
--- a/base/source/c/copyCommon.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Comptational Science Alliance                                   *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-/*
- *  This is a utility program used by native code to generate Java exceptions.
- *
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include "jni.h"
-
-/*
- *   public static native boolean isLittleEndian();
- */
-JNIEXPORT jboolean JNICALL Java_ch_systemsx_cisd_base_convert_NativeData_isLittleEndian
-(JNIEnv *env,
-  jclass clss
-  )  
-{
-    return MACHINE_BYTE_ORDER == 1;
-}
-
-/*
- *  A fatal error in a JNI call
- *  Create and throw an 'InternalError'
- *
- *  Note:  This routine never returns from the 'throw',
- *  and the Java native method immediately raises the
- *  exception.
- */
-jboolean h5JNIFatalError( JNIEnv *env, char *functName)
-{
-    jmethodID jm;
-    jclass jc;
-    char * args[2];
-    jobject ex;
-    jstring str;
-    int rval;
-
-#ifdef __cplusplus
-    jc = env->FindClass("java/lang/InternalError");
-#else
-    jc = (*env)->FindClass(env, "java/lang/InternalError");
-#endif
-    if (jc == NULL) {
-        return JNI_FALSE;
-    }
-#ifdef __cplusplus
-    jm = env->GetMethodID(jc, "<init>", "(Ljava/lang/String;)V");
-#else
-    jm = (*env)->GetMethodID(env, jc, "<init>", "(Ljava/lang/String;)V");
-#endif
-    if (jm == NULL) {
-        return JNI_FALSE;
-    }
-
-#ifdef __cplusplus
-    str = env->NewStringUTF(functName);
-#else
-    str = (*env)->NewStringUTF(env,functName);
-#endif
-    args[0] = (char *)str;
-    args[1] = 0;
-#ifdef __cplusplus
-    ex = env->NewObjectA ( jc, jm, (jvalue *)args );
-
-    rval = env->Throw( (jthrowable) ex );
-#else
-    ex = (*env)->NewObjectA ( env, jc, jm, (jvalue *)args );
-
-    rval = (*env)->Throw(env, ex );
-#endif
-    if (rval < 0) {
-        fprintf(stderr, "FATAL ERROR:  JNIFatal: Throw failed\n");
-        return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-
-/*
- *  A NULL argument in an HDF5 call
- *  Create and throw an 'NullPointerException'
- *
- *  Note:  This routine never returns from the 'throw',
- *  and the Java native method immediately raises the
- *  exception.
- */
-jboolean h5nullArgument( JNIEnv *env, char *functName)
-{
-    jmethodID jm;
-    jclass jc;
-    char * args[2];
-    jobject ex;
-    jstring str;
-    int rval;
-
-#ifdef __cplusplus
-    jc = env->FindClass("java/lang/NullPointerException");
-#else
-    jc = (*env)->FindClass(env, "java/lang/NullPointerException");
-#endif
-    if (jc == NULL) {
-        return JNI_FALSE;
-    }
-#ifdef __cplusplus
-    jm = env->GetMethodID(jc, "<init>", "(Ljava/lang/String;)V");
-#else
-    jm = (*env)->GetMethodID(env, jc, "<init>", "(Ljava/lang/String;)V");
-#endif
-    if (jm == NULL) {
-        return JNI_FALSE;
-    }
-
-#ifdef __cplusplus
-    str = env->NewStringUTF(functName);
-#else
-    str = (*env)->NewStringUTF(env,functName);
-#endif
-    args[0] = (char *)str;
-    args[1] = 0;
-#ifdef __cplusplus
-    ex = env->NewObjectA ( jc, jm, (jvalue *)args );
-
-    rval = env->Throw((jthrowable) ex );
-#else
-    ex = (*env)->NewObjectA ( env, jc, jm, (jvalue *)args );
-
-    rval = (*env)->Throw(env, ex );
-#endif
-
-    if (rval < 0) {
-        fprintf(stderr, "FATAL ERROR:  NullPointer: Throw failed\n");
-        return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-
-/*
- *  A bad argument in an HDF5 call
- *  Create and throw an 'IllegalArgumentException'
- *
- *  Note:  This routine never returns from the 'throw',
- *  and the Java native method immediately raises the
- *  exception.
- */
-jboolean h5badArgument( JNIEnv *env, char *functName)
-{
-    jmethodID jm;
-    jclass jc;
-    char * args[2];
-    jobject ex;
-    jstring str;
-    int rval;
-
-#ifdef __cplusplus
-    jc = env->FindClass("java/lang/IllegalArgumentException");
-#else
-    jc = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
-#endif
-    if (jc == NULL) {
-        return JNI_FALSE;
-    }
-#ifdef __cplusplus
-    jm = env->GetMethodID(jc, "<init>", "(Ljava/lang/String;)V");
-#else
-    jm = (*env)->GetMethodID(env, jc, "<init>", "(Ljava/lang/String;)V");
-#endif
-    if (jm == NULL) {
-        return JNI_FALSE;
-    }
-
-#ifdef __cplusplus
-    str = env->NewStringUTF(functName);
-#else
-    str = (*env)->NewStringUTF(env,functName);
-#endif
-    args[0] = (char *)str;
-    args[1] = 0;
-#ifdef __cplusplus
-    ex = env->NewObjectA ( jc, jm, (jvalue *)args );
-
-    rval = env->Throw((jthrowable) ex );
-#else
-    ex = (*env)->NewObjectA ( env, jc, jm, (jvalue *)args );
-
-    rval = (*env)->Throw(env, ex );
-#endif
-    if (rval < 0) {
-        fprintf(stderr, "FATAL ERROR:  BadArgument: Throw failed\n");
-        return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-
-/*
- *  An Index-out-of-bounds error argument in an HDF5 call
- *  Create and throw an 'IllegalArgumentException'
- *
- *  Note:  This routine never returns from the 'throw',
- *  and the Java native method immediately raises the
- *  exception.
- */
-jboolean h5indexOutOfBounds( JNIEnv *env, char *functName)
-{
-    jmethodID jm;
-    jclass jc;
-    char * args[2];
-    jobject ex;
-    jstring str;
-    int rval;
-
-#ifdef __cplusplus
-    jc = env->FindClass("java/lang/IndexOutOfBoundsException");
-#else
-    jc = (*env)->FindClass(env, "java/lang/IndexOutOfBoundsException");
-#endif
-    if (jc == NULL) {
-        return JNI_FALSE;
-    }
-#ifdef __cplusplus
-    jm = env->GetMethodID(jc, "<init>", "(Ljava/lang/String;)V");
-#else
-    jm = (*env)->GetMethodID(env, jc, "<init>", "(Ljava/lang/String;)V");
-#endif
-    if (jm == NULL) {
-        return JNI_FALSE;
-    }
-
-#ifdef __cplusplus
-    str = env->NewStringUTF(functName);
-#else
-    str = (*env)->NewStringUTF(env,functName);
-#endif
-    args[0] = (char *)str;
-    args[1] = 0;
-#ifdef __cplusplus
-    ex = env->NewObjectA ( jc, jm, (jvalue *)args );
-
-    rval = env->Throw((jthrowable) ex );
-#else
-    ex = (*env)->NewObjectA ( env, jc, jm, (jvalue *)args );
-
-    rval = (*env)->Throw(env, ex );
-#endif
-    if (rval < 0) {
-        fprintf(stderr, "FATAL ERROR:  BadArgument: Throw failed\n");
-        return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-#ifdef __cplusplus
-}
-#endif
diff --git a/base/source/c/unix.c b/base/source/c/unix.c
deleted file mode 100644
index 1cfeef9fc9de76e48a37420c5f907f27783b4d34..0000000000000000000000000000000000000000
--- a/base/source/c/unix.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <jni.h>
-
-/* Types of links. Keep in sync with Java enum. */
-#define REGULAR_FILE 0
-#define DIRECTORY 1
-#define SYMLINK 2
-#define OTHER 3
-
-#ifndef __STAT
-#define __STAT stat
-#endif
-
-#ifndef __LSTAT
-#define __LSTAT lstat
-#endif
-
-/* Global references. */
-jclass stringClass;
-jclass passwordClass;
-jmethodID passwordConstructorID;
-jclass groupClass;
-jmethodID groupConstructorID;
-jclass statClass;
-jmethodID statConstructorID;
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_init
-  (JNIEnv *env, jclass clss)
-{
-    stringClass = (*env)->FindClass(env, "java/lang/String");
-    if (stringClass == NULL) /* Really shouldn't happen, will throw NoClassDefFoundError. */
-    {
-        return -1;
-    }
-    stringClass = (*env)->NewGlobalRef(env, stringClass);
-    passwordClass = (*env)->FindClass(env, "ch/systemsx/cisd/base/unix/Unix$Password");
-    if (passwordClass == NULL) /* Really shouldn't happen, will throw NoClassDefFoundError. */
-    {
-        return -1;
-    }
-    passwordClass = (*env)->NewGlobalRef(env, passwordClass);
-    passwordConstructorID = (*env)->GetMethodID(env, passwordClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
-    if (passwordConstructorID == NULL) /* Really shouldn't happen, will throw NoSuchMethodError. */
-    {
-        return -1;
-    }
-    groupClass = (*env)->FindClass(env, "ch/systemsx/cisd/base/unix/Unix$Group");
-    if (groupClass == NULL) /* Really shouldn't happen, will throw NoClassDefFoundError. */
-    {
-        return -1;
-    }
-    groupClass = (*env)->NewGlobalRef(env, groupClass);
-    groupConstructorID = (*env)->GetMethodID(env, groupClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;)V");
-    if (groupConstructorID == NULL) /* Really shouldn't happen, will throw NoSuchMethodError. */
-    {
-        return -1;
-    }
-    statClass = (*env)->FindClass(env, "ch/systemsx/cisd/base/unix/Unix$Stat");
-    if (statClass == NULL) /* Really shouldn't happen, will throw NoClassDefFoundError. */
-    {
-        return -1;
-    }
-    statClass = (*env)->NewGlobalRef(env, statClass);
-    statConstructorID = (*env)->GetMethodID(env, statClass, "<init>", "(JJSBIIIJJJJJI)V");
-    if (groupConstructorID == NULL) /* Really shouldn't happen, will throw NoSuchMethodError. */
-    {
-        return -1;
-    }
-    return 0;
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_link
-  (JNIEnv *env, jclass clss, jstring filename, jstring linktarget)
-{
-    const char* pfilename;
-    const char* plinktarget;
-    int retval;
-
-    pfilename = (char *)(*env)->GetStringUTFChars(env, filename, NULL);
-    plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, NULL);
-
-    retval = link(pfilename, plinktarget);
-    if (retval < 0)
-    {
-        retval = -errno;
-    }
-
-    (*env)->ReleaseStringUTFChars(env, filename, pfilename);
-    (*env)->ReleaseStringUTFChars(env, linktarget, plinktarget);
-
-   return retval;
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_symlink
-  (JNIEnv *env, jclass clss, jstring filename, jstring linktarget)
-{
-    const char* pfilename;
-    const char* plinktarget;
-    int retval;
-
-    pfilename = (char *)(*env)->GetStringUTFChars(env, filename, NULL);
-    plinktarget = (char *)(*env)->GetStringUTFChars(env, linktarget, NULL);
-
-    retval = symlink(pfilename, plinktarget);
-    if (retval < 0)    { 
-        retval = -errno; 
-    }
-
-    (*env)->ReleaseStringUTFChars(env, filename, pfilename);
-    (*env)->ReleaseStringUTFChars(env, linktarget, plinktarget);
-
-   return retval;
-}
-
-/* Function pointer for stat function calls. */
-typedef int (*stat_func_ptr)(const char *path, struct __STAT *buf);
-
-jobject call_stat(JNIEnv *env, jclass clss, jstring filename, stat_func_ptr statf)
-{
-    const char* pfilename;
-    struct __STAT s;
-    jobject result;
-    int retval;
-    jbyte type;
-
-    pfilename = (char *) (*env)->GetStringUTFChars(env, filename, NULL);
-    retval = statf(pfilename, &s);
-    (*env)->ReleaseStringUTFChars(env, filename, pfilename);
-    if (retval < 0)
-    {
-        return NULL;
-    } else
-    {
-        if (S_ISLNK(s.st_mode))
-        {
-            type = SYMLINK;
-        } else if (S_ISDIR(s.st_mode))
-        {
-            type = DIRECTORY;
-        } else if (S_ISREG(s.st_mode))
-        {
-            type = REGULAR_FILE;
-        } else
-        {
-            type = OTHER;
-        }
-        result = (*env)->NewObject(env, statClass, statConstructorID, (jlong) s.st_dev, (jlong) s.st_ino, 
-                   (jshort) (s.st_mode & 07777), (jbyte) type, (jint) s.st_nlink, 
-                   (jint) s.st_uid, (jint) s.st_gid, (jlong) s.st_atime, (jlong) s.st_mtime, 
-                   (jlong) s.st_ctime, (jlong) s.st_size, (jlong) s.st_blocks, (jint) s.st_blksize);
-        return result;
-    }
-}
-
-JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_stat(JNIEnv *env, jclass clss, jstring filename)
-{
-    return call_stat(env, clss, filename, &__STAT);
-}
-
-JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_lstat(JNIEnv *env, jclass clss, jstring filename)
-{
-    return call_stat(env, clss, filename, &__LSTAT);
-}
-
-JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_readlink(JNIEnv *env, jclass clss, jstring linkname, jint linkvallen)
-{
-    const char* plinkname;
-    char plinkvalue[linkvallen + 1];
-    int retval;
-	
-    plinkname = (char *)(*env)->GetStringUTFChars(env, linkname, NULL);
-    retval = readlink(plinkname, plinkvalue, linkvallen);
-    (*env)->ReleaseStringUTFChars(env, linkname, plinkname);
-    if (retval < 0)
-    {
-		    return NULL;
-    } else
-    {
-        plinkvalue[linkvallen] = '\0';
-        return (*env)->NewStringUTF(env, plinkvalue);
-    }
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_chmod(JNIEnv *env, jclass clss, jstring linkname, jshort mode)
-{
-    const char* plinkname;
-    int retval;
-	
-    plinkname = (char *)(*env)->GetStringUTFChars(env, linkname, NULL);
-    retval = chmod(plinkname, mode);
-    (*env)->ReleaseStringUTFChars(env, linkname, plinkname);
-    if (retval < 0)
-    {
-		    return -errno;
-    } else
-    {
-        return 0;
-    }
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_chown(JNIEnv *env, jclass clss, jstring linkname, jint uid, jint gid)
-{
-    const char* plinkname;
-    int retval;
-	
-    plinkname = (char *)(*env)->GetStringUTFChars(env, linkname, NULL);
-    retval = chown(plinkname, uid, gid);
-    (*env)->ReleaseStringUTFChars(env, linkname, plinkname);
-    if (retval < 0)
-    {
-		    return -errno;
-    } else
-    {
-        return 0;
-    }
-}
-
-JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getuser(JNIEnv *env, jclass clss, jint uid)
-{
-    struct passwd *pw;
-	
-    pw = getpwuid(uid);
-    if (pw == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        return (*env)->NewStringUTF(env, pw->pw_name);
-    }
-}
-
-JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getgroup(JNIEnv *env, jclass clss, jint gid)
-{
-    struct group *gp;
-	
-    gp = getgrgid(gid);
-    if (gp == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        return (*env)->NewStringUTF(env, gp->gr_name);
-    }
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getuid__(JNIEnv *env, jclass clss)
-{
-    return getuid();
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_geteuid(JNIEnv *env, jclass clss)
-{
-    return geteuid();
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getuid__Ljava_lang_String_2(JNIEnv *env, jclass clss, jstring user)
-{
-    const char* puser;
-    struct passwd *pw;
-	
-    puser = (char *)(*env)->GetStringUTFChars(env, user, NULL);
-    pw = getpwnam(puser);
-    (*env)->ReleaseStringUTFChars(env, user, puser);
-    if (pw == NULL)
-    {
-		    return -errno;
-    } else
-    {
-        return pw->pw_uid;
-    }
-}
-
-JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getpwnam(JNIEnv *env, jclass clss, jstring user)
-{
-    const char* puser;
-    struct passwd *pw;
-    jstring passwd;
-    jstring fullname;
-    jstring homedir;
-    jstring shell;
-    jobject result;
-	
-    puser = (char *)(*env)->GetStringUTFChars(env, user, NULL);
-    pw = getpwnam(puser);
-    (*env)->ReleaseStringUTFChars(env, user, puser);
-    if (pw == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        passwd = (*env)->NewStringUTF(env, pw->pw_passwd);
-        fullname = (*env)->NewStringUTF(env, pw->pw_gecos);
-        homedir = (*env)->NewStringUTF(env, pw->pw_dir);
-        shell = (*env)->NewStringUTF(env, pw->pw_shell);
-        result = (*env)->NewObject(env, passwordClass, passwordConstructorID, user, passwd, pw->pw_uid, pw->pw_gid, fullname, homedir, shell);
-        return result;
-    }
-}
-
-JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getpwuid(JNIEnv *env, jclass clss, jint uid)
-{
-    struct passwd *pw;
-    jstring user;
-    jstring passwd;
-    jstring fullname;
-    jstring homedir;
-    jstring shell;
-    jobject result;
-	
-    pw = getpwuid(uid);
-    if (pw == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        user = (*env)->NewStringUTF(env, pw->pw_name);
-        passwd = (*env)->NewStringUTF(env, pw->pw_passwd);
-        fullname = (*env)->NewStringUTF(env, pw->pw_gecos);
-        homedir = (*env)->NewStringUTF(env, pw->pw_dir);
-        shell = (*env)->NewStringUTF(env, pw->pw_shell);
-        result = (*env)->NewObject(env, passwordClass, passwordConstructorID, user, passwd, pw->pw_uid, pw->pw_gid, fullname, homedir, shell);
-        return result;
-    }
-}
-
-JNIEXPORT jobjectArray JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getgrnam(JNIEnv *env, jclass clss, jstring group)
-{
-    const char* pgroup;
-    struct group *gr;
-    jstring grouppwd;
-    jobject result;
-    jobjectArray members;
-    int i;
-	
-    pgroup = (char *)(*env)->GetStringUTFChars(env, group, NULL);
-    gr = getgrnam(pgroup);
-    (*env)->ReleaseStringUTFChars(env, group, pgroup);
-    if (gr == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        grouppwd = (*env)->NewStringUTF(env, gr->gr_passwd);
-        /* Count group members. */
-        for (i = 0; (gr->gr_mem)[i] != NULL; ++i);
-        members = (*env)->NewObjectArray(env, i, stringClass, NULL);
-        for (i = 0; (gr->gr_mem)[i] != NULL; ++i)
-        {
-            (*env)->SetObjectArrayElement(env, members, i, (*env)->NewStringUTF(env, (gr->gr_mem)[i]));
-        }
-        result = (*env)->NewObject(env, groupClass, groupConstructorID, group, grouppwd, gr->gr_gid, members); 
-        return result;
-    }
-}
-
-JNIEXPORT jobjectArray JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getgrgid(JNIEnv *env, jclass clss, jint gid)
-{
-    struct group *gr;
-    jstring group;
-    jstring grouppwd;
-    jobject result;
-    jobjectArray members;
-    int i;
-	
-    gr = getgrgid(gid);
-    if (gr == NULL)
-    {
-		    return NULL;
-    } else
-    {
-        group = (*env)->NewStringUTF(env, gr->gr_name);
-        grouppwd = (*env)->NewStringUTF(env, gr->gr_passwd);
-        /* Count group members. */
-        for (i = 0; (gr->gr_mem)[i] != NULL; ++i);
-        members = (*env)->NewObjectArray(env, i, stringClass, NULL);
-        for (i = 0; (gr->gr_mem)[i] != NULL; ++i)
-        {
-            (*env)->SetObjectArrayElement(env, members, i, (*env)->NewStringUTF(env, (gr->gr_mem)[i]));
-        }
-        result = (*env)->NewObject(env, groupClass, groupConstructorID, group, grouppwd, gr->gr_gid, members); 
-        return result;
-    }
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getgid__(JNIEnv *env, jclass clss)
-{
-    return getgid();
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getegid(JNIEnv *env, jclass clss)
-{
-    return getegid();
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getgid__Ljava_lang_String_2(JNIEnv *env, jclass clss, jstring group)
-{
-    const char* pgroup;
-    struct group *gr;
-	
-    pgroup = (char *)(*env)->GetStringUTFChars(env, group, NULL);
-    gr = getgrnam(pgroup);
-    (*env)->ReleaseStringUTFChars(env, group, pgroup);
-    if (gr == NULL)
-    {
-		    return -errno;
-    } else
-    {
-        return gr->gr_gid;
-    }
-}
-
-JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_getpid(JNIEnv *env, jclass clss)
-{
-    return getpid();
-}
-
-JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_strerror__I(JNIEnv *env, jclass clss, jint errnum)
-{
-    return (*env)->NewStringUTF(env, strerror(errnum < 0 ? -errnum : errnum));
-}
-
-JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_strerror__(JNIEnv *env, jclass clss)
-{
-    return (*env)->NewStringUTF(env, strerror(errno));
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/BuildAndEnvironmentInfo.java b/base/source/java/ch/systemsx/cisd/base/BuildAndEnvironmentInfo.java
deleted file mode 100644
index 91a10b57ee06a94ac41eaaa40d45e69872a39dd6..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/BuildAndEnvironmentInfo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base;
-
-import ch.systemsx.cisd.base.utilities.AbstractBuildAndEnvironmentInfo;
-
-
-/**
- * The build and environment information for cisd-base.
- *
- * @author Franz-Josef Elmer
- */
-public class BuildAndEnvironmentInfo extends AbstractBuildAndEnvironmentInfo
-{
-    private final static String BASE = "base";
-    
-    public final static BuildAndEnvironmentInfo INSTANCE = new BuildAndEnvironmentInfo();
-    
-    private BuildAndEnvironmentInfo()
-    {
-        super(BASE);
-    }
-
-    /**
-     * Shows build and environment information on the console.
-     */
-    public static void main(String[] args)
-    {
-        System.out.println(INSTANCE);
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java b/base/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java
deleted file mode 100644
index abf69e3a7faffadfc28b6cc6f31aa09d1b46963c..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2012 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation all JSON transfered classes should be marked with. It was originally created to
- * replace @JsonTypeName annotation which was not visible in the documentation. With @JsonTypeName
- * annotation it would be impossible for our users to find a logical type name of a class to be sent
- * to JSON-RPC services.
- * 
- * @author pkupczyk
- */
-@Target(
-    { ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface JsonObject
-{
-    /**
-     * Logical type name for annotated type.
-     */
-    public String value();
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/convert/NativeArrayEncoding.java b/base/source/java/ch/systemsx/cisd/base/convert/NativeArrayEncoding.java
deleted file mode 100644
index e2bfa3daacde2698981cc2c915d4c8ab0222c75a..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/convert/NativeArrayEncoding.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.convert;
-
-import ch.systemsx.cisd.base.convert.NativeData.ByteOrder;
-
-/**
- * An enum for encoding array of numbers (integer or float) in native (host) format.
- * 
- * @author Bernd Rinn
- */
-public enum NativeArrayEncoding
-{
-    INT8_NATIVE(false, (byte) 1, NativeData.ByteOrder.NATIVE),
-
-    INT16_LITTLE_ENDIAN(false, (byte) 2, NativeData.ByteOrder.LITTLE_ENDIAN),
-
-    INT32_LITTLE_ENDIAN(false, (byte) 4, NativeData.ByteOrder.LITTLE_ENDIAN),
-
-    INT64_LITTLE_ENDIAN(false, (byte) 8, NativeData.ByteOrder.LITTLE_ENDIAN),
-
-    INT16_BIG_ENDIAN(false, (byte) 2, NativeData.ByteOrder.BIG_ENDIAN),
-
-    INT32_BIG_ENDIAN(false, (byte) 4, NativeData.ByteOrder.BIG_ENDIAN),
-
-    INT64_BIG_ENDIAN(false, (byte) 8, NativeData.ByteOrder.BIG_ENDIAN),
-
-    FLOAT32_LITTLE_ENDIAN(true, (byte) 4, NativeData.ByteOrder.LITTLE_ENDIAN),
-
-    FLOAT64_LITTLE_ENDIAN(true, (byte) 8, NativeData.ByteOrder.LITTLE_ENDIAN),
-
-    FLOAT32_BIG_ENDIAN(true, (byte) 4, NativeData.ByteOrder.BIG_ENDIAN),
-
-    FLOAT64_BIG_ENDIAN(true, (byte) 8, NativeData.ByteOrder.BIG_ENDIAN),
-
-    ;
-
-    private static final int MIN_ENCODING_HEADER_SIZE = 8;
-
-    private static final int CHAR_N = 78;
-
-    private static final int CHAR_B = 66;
-
-    private static final int CHAR_L = 76;
-
-    private static final int CHAR_I = 73;
-
-    private static final int CHAR_F = 70;
-
-    private boolean floatingPoint;
-
-    private ByteOrder byteOrder;
-
-    private byte sizeInBytes;
-
-    private byte[] magic;
-
-    NativeArrayEncoding(boolean floatingPoint, byte sizeInBytes, NativeData.ByteOrder byteOrder)
-    {
-        this.floatingPoint = floatingPoint;
-        this.byteOrder = byteOrder;
-        this.sizeInBytes = sizeInBytes;
-        this.magic =
-                new byte[]
-                    {
-                            (byte) (floatingPoint ? CHAR_F : CHAR_I),
-                            (byte) ((byteOrder == ByteOrder.LITTLE_ENDIAN) ? CHAR_L
-                                    : (byteOrder == ByteOrder.BIG_ENDIAN) ? CHAR_B : CHAR_N),
-                            sizeInBytes };
-    }
-
-    /**
-     * Returns <code>true</code>, if the encoded array is a float array.
-     */
-    public boolean isFloatingPoint()
-    {
-        return floatingPoint;
-    }
-
-    /**
-     * Returns <code>true</code>, if the encoded array is an int array.
-     */
-    public boolean isInteger()
-    {
-        return floatingPoint == false;
-    }
-
-    /**
-     * Returns the byte order of the array.
-     */
-    public NativeData.ByteOrder getByteOrder()
-    {
-        return byteOrder;
-    }
-
-    /**
-     * Returns the size of one element in bytes.
-     */
-    public byte getSizeInBytes()
-    {
-        return sizeInBytes;
-    }
-
-    byte[] getMagic()
-    {
-        return magic;
-    }
-
-    static NativeArrayEncoding tryGetIntEncoding(ByteOrder byteOrder, byte sizeInBytes)
-    {
-        assert byteOrder != null;
-        if (sizeInBytes == 1 && byteOrder == ByteOrder.NATIVE)
-        {
-            return INT8_NATIVE;
-        } else if (sizeInBytes == 2)
-        {
-            return (byteOrder == ByteOrder.LITTLE_ENDIAN) ? INT16_LITTLE_ENDIAN : INT16_BIG_ENDIAN;
-        } else if (sizeInBytes == 4)
-        {
-            return (byteOrder == ByteOrder.LITTLE_ENDIAN) ? INT32_LITTLE_ENDIAN : INT32_BIG_ENDIAN;
-
-        } else if (sizeInBytes == 8)
-        {
-            return (byteOrder == ByteOrder.LITTLE_ENDIAN) ? INT64_LITTLE_ENDIAN : INT64_BIG_ENDIAN;
-        }
-        return null;
-    }
-
-    static NativeArrayEncoding tryGetFloatEncoding(ByteOrder byteOrder, byte sizeInBytes)
-    {
-        assert byteOrder != null;
-        if (sizeInBytes == 4)
-        {
-            return (byteOrder == ByteOrder.LITTLE_ENDIAN) ? FLOAT32_LITTLE_ENDIAN
-                    : FLOAT32_BIG_ENDIAN;
-        } else if (sizeInBytes == 8)
-        {
-            return (byteOrder == ByteOrder.LITTLE_ENDIAN) ? FLOAT64_LITTLE_ENDIAN
-                    : FLOAT64_BIG_ENDIAN;
-        }
-        return null;
-    }
-
-    /**
-     * Returns the encoding for the given <var>byteArr</var>, or <code>null</code>, if
-     * <var>byteArr</var> is not an encoded array.
-     */
-    public static NativeArrayEncoding tryGetEncoding(byte[] byteArr)
-    {
-        if (byteArr.length < MIN_ENCODING_HEADER_SIZE)
-        {
-            return null;
-        }
-        final ByteOrder byteOrder =
-                (byteArr[1] == CHAR_L) ? ByteOrder.LITTLE_ENDIAN
-                        : (byteArr[1] == CHAR_B) ? ByteOrder.BIG_ENDIAN : null;
-        if (byteOrder == null)
-        {
-            return null;
-        }
-        if (byteArr[0] == CHAR_F)
-        {
-            return tryGetFloatEncoding(byteOrder, byteArr[2]);
-        } else if (byteArr[0] == CHAR_I)
-        {
-            return tryGetIntEncoding(byteOrder, byteArr[2]);
-        }
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/convert/NativeData.java b/base/source/java/ch/systemsx/cisd/base/convert/NativeData.java
deleted file mode 100644
index f962af5504892d1de6945b851a9074a712128106..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/convert/NativeData.java
+++ /dev/null
@@ -1,1086 +0,0 @@
-/****************************************************************************
- * NCSA HDF                                                                 *
- * National Computational Science Alliance                                   *
- * University of Illinois at Urbana-Champaign                               *
- * 605 E. Springfield, Champaign IL 61820                                   *
- *                                                                          *
- * Center for Information Sciences and Databases, ETH Zurich, Switzerland   *
- *                                                                          *
- * For conditions of distribution and use, see the accompanying             *
- * COPYING file.                                                            *
- *                                                                          *
- ****************************************************************************/
-
-package ch.systemsx.cisd.base.convert;
-
-import java.nio.ByteBuffer;
-
-import ch.systemsx.cisd.base.utilities.NativeLibraryUtilities;
-
-/**
- * This class encapsulates native methods to deal with arrays of numbers, converting from numbers to
- * bytes and bytes to numbers.
- * <p>
- * These routines are used by class <b>HDFArray</b> to pass data to and from the HDF5 library.
- * <p>
- * Methods copyXxxToByte() convert a Java array of primitive numbers (int, short, ...) to a Java
- * array of bytes. Methods copyByteToXxx() convert from a Java array of bytes into a Java array of
- * primitive numbers (int, short, ...)
- * <p>
- * Variant interfaces convert only a sub-array.
- * <p>
- * The class has optimized methods using jni-libraries for some common platforms and a pure-java
- * implementation (called <i>javamode</i> if the jni-libraries are not available). If you want to
- * enforce <i>javamode</i>, you need to pass the property <code>nativedata.javamode=true</code> to
- * the JRE.
- */
-public class NativeData
-{
-    private static final boolean useNativeLib;
-
-    static
-    {
-        if (Boolean.getBoolean("nativedata.javamode"))
-        {
-            useNativeLib = false;
-        } else
-        {
-            useNativeLib = NativeLibraryUtilities.loadNativeLibrary("nativedata");
-        }
-    }
-
-    /** Size of a <code>short</code> value in <code>byte</code>s. */
-    public final static int SHORT_SIZE = 2;
-
-    /** Size of a <code>char</code> value in <code>byte</code>s. */
-    public final static int CHAR_SIZE = 2;
-
-    /** Size of an <code>int</code> value in <code>byte</code>s. */
-    public final static int INT_SIZE = 4;
-
-    /** Size of a <code>long</code> value in <code>byte</code>s. */
-    public final static int LONG_SIZE = 8;
-
-    /** Size of a <code>float</code> value in <code>byte</code>s. */
-    public final static int FLOAT_SIZE = 4;
-
-    /** Size of a <code>double</code> value in <code>byte</code>s. */
-    public final static int DOUBLE_SIZE = 8;
-
-    /** Byte Order enumeration. */
-    // Implementation note: the ordinal of the entries needs to be understood by the native methods
-    public enum ByteOrder
-    {
-        /** <code>byte[]</code> is in native byte order (that is: don't change byte order) */
-        NATIVE(java.nio.ByteOrder.nativeOrder()),
-        /** <code>byte[]</code> is in little endian byte order */
-        LITTLE_ENDIAN(java.nio.ByteOrder.LITTLE_ENDIAN),
-        /** <code>byte[]</code> is in big endian byte order */
-        BIG_ENDIAN(java.nio.ByteOrder.BIG_ENDIAN);
-
-        private final java.nio.ByteOrder nioByteOrder;
-
-        ByteOrder(java.nio.ByteOrder nioByteOrder)
-        {
-            this.nioByteOrder = nioByteOrder;
-        }
-
-        java.nio.ByteOrder getNioByteOrder()
-        {
-            return nioByteOrder;
-        }
-
-        static ByteOrder getNativeByteOrder()
-        {
-            return NATIVE.nioByteOrder.equals(LITTLE_ENDIAN.nioByteOrder) ? LITTLE_ENDIAN
-                    : BIG_ENDIAN;
-        }
-    }
-
-    /**
-     * Returns <code>true</code> if this platform is a little-endian platform and <code>false</code>
-     * , if it is a big-endian platform.
-     */
-    private static native boolean isLittleEndian();
-
-    /**
-     * Copies a range from an array of <code>int</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>int</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>int</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>int</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyIntToByte(int[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>int</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>int</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>int</code> to
-     *            start
-     * @param len The number of <code>int</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToInt(byte[] inData, int inStart, int[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>long</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>long</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>long</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>long</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyLongToByte(long[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>long</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>long</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>long</code> to
-     *            start
-     * @param len The number of <code>long</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToLong(byte[] inData, int inStart, long[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>short</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>short</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>short</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>short</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyShortToByte(short[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>short</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>short</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>short</code> to
-     *            start
-     * @param len The number of <code>short</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToShort(byte[] inData, int inStart, short[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>char</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>char</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>char</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>char</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyCharToByte(char[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>char</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>char</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>char</code> to
-     *            start
-     * @param len The number of <code>char</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToChar(byte[] inData, int inStart, char[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>float</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>float</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>float</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>float</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyFloatToByte(float[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>float</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>float</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>float</code> to
-     *            start
-     * @param len The number of <code>float</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToFloat(byte[] inData, int inStart, float[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>double</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>double</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>double</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>double</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyDoubleToByte(double[] inData, int inStart, byte[] outData,
-            int outStart, int len, int byteOrder);
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>double</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>double</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>double</code> to
-     *            start
-     * @param len The number of <code>double</code> to copy
-     * @param byteOrder The ordinal of {@link ByteOrder}, encoding what byte order the
-     *            <var>outData</var> should be in.
-     */
-    private static native void copyByteToDouble(byte[] inData, int inStart, double[] outData,
-            int outStart, int len, int byteOrder);
-
-    //
-    // Public
-    //
-
-    /** Call to ensure that the native library is loaded. */
-    public static void ensureNativeLibIsLoaded()
-    {
-    }
-
-    /**
-     * Returns <code>true</code>, if this class uses the native library and <code>false</code>
-     * otherwise.
-     */
-    public static boolean isUseNativeLib()
-    {
-        return useNativeLib;
-    }
-
-    /**
-     * Returns the native byte order of the host running this JRE.
-     */
-    public static ByteOrder getNativeByteOrder()
-    {
-        return ByteOrder.getNativeByteOrder();
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>s</var>.
-     */
-    public static short changeByteOrder(short s)
-    {
-        return (short) ((s << 8) | ((s >> 8) & 0xff));
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>c</var>.
-     */
-    public static char changeByteOrder(char c)
-    {
-        return (char) ((c << 8) | ((c >> 8) & 0xff));
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>i</var>.
-     */
-    public static int changeByteOrder(int i)
-    {
-        return ((changeByteOrder((short) i) << 16) | (changeByteOrder((short) (i >> 16)) & 0xffff));
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>f</var>.
-     */
-    public static float changeByteOrder(float f)
-    {
-        return Float.intBitsToFloat(changeByteOrder(Float.floatToRawIntBits(f)));
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>l</var>.
-     */
-    public static long changeByteOrder(long l)
-    {
-        return (((long) changeByteOrder((int) (l)) << 32) | (changeByteOrder((int) (l >> 32)) & 0xffffffffL));
-    }
-
-    /**
-     * Changes the byte order of the bytes constituting <var>d</var>.
-     */
-    public static double changeByteOrder(double d)
-    {
-        return Double.longBitsToDouble(changeByteOrder(Double.doubleToRawLongBits(d)));
-    }
-
-    /**
-     * Copies a range from an array of <code>int</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>int</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>int</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>int</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyIntToByte(int[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyIntToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * INT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asIntBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>int</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>int</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>int</code> to
-     *            start
-     * @param len The number of <code>int</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToInt(byte[] inData, int inStart, int[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToInt(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * INT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asIntBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>long</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>long</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>long</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>long</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyLongToByte(long[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyLongToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * LONG_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asLongBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>long</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>long</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>long</code> to
-     *            start
-     * @param len The number of <code>long</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToLong(byte[] inData, int inStart, long[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToLong(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * LONG_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asLongBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>short</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>short</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>short</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>short</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyShortToByte(short[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyShortToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * SHORT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asShortBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>char</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>char</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>char</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>char</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyCharToByte(char[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyCharToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * SHORT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asCharBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>short</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>short</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>short</code> to
-     *            start
-     * @param len The number of <code>short</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToShort(byte[] inData, int inStart, short[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToShort(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * SHORT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asShortBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>char</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>short</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>short</code> to
-     *            start
-     * @param len The number of <code>short</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToChar(byte[] inData, int inStart, char[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToChar(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * CHAR_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asCharBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>float</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>float</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>float</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>float</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyFloatToByte(float[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyFloatToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * FLOAT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asFloatBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>float</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>float</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>float</code> to
-     *            start
-     * @param len The number of <code>float</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToFloat(byte[] inData, int inStart, float[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToFloat(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * FLOAT_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asFloatBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>double</code> into an array of <code>byte</code>.
-     * 
-     * @param inData The input array of <code>double</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>double</code> to
-     *            start
-     * @param outData The output array of <code>byte</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>byte</code> to
-     *            start
-     * @param len The number of <code>double</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyDoubleToByte(double[] inData, int inStart, byte[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyDoubleToByte(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(outData, outStart, len * DOUBLE_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asDoubleBuffer().put(inData, inStart, len);
-        }
-    }
-
-    /**
-     * Copies a range from an array of <code>byte</code> into an array of <code>double</code>.
-     * 
-     * @param inData The input array of <code>byte</code> values.
-     * @param inStart The position in the input array <code>inData</code> of <code>byte</code> to
-     *            start
-     * @param outData The output array of <code>double</code> values.
-     * @param outStart The start in the output array <code>byteData</code> of <code>double</code> to
-     *            start
-     * @param len The number of <code>double</code> to copy
-     * @param byteOrder The {@link ByteOrder}, encoding what byte order the <var>outData</var>
-     *            should be in.
-     */
-    public static void copyByteToDouble(byte[] inData, int inStart, double[] outData, int outStart,
-            int len, ByteOrder byteOrder)
-    {
-        if (useNativeLib)
-        {
-            copyByteToDouble(inData, inStart, outData, outStart, len, byteOrder.ordinal());
-        } else
-        {
-            final ByteBuffer bb = ByteBuffer.wrap(inData, inStart, len * DOUBLE_SIZE);
-            bb.order(byteOrder.getNioByteOrder());
-            bb.asDoubleBuffer().get(outData, outStart, len);
-        }
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>char[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>short</code> values to convert.
-     * @return The <code>char[]</code> array.
-     */
-    public static char[] byteToChar(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final char[] array = new char[len];
-        copyByteToChar(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>char[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>char[]</code> array.
-     */
-    public static char[] byteToChar(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % CHAR_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / SHORT_SIZE;
-        final char[] array = new char[len];
-        copyByteToChar(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>short[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>short</code> values to convert.
-     * @return The <code>short[]</code> array.
-     */
-    public static short[] byteToShort(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final short[] array = new short[len];
-        copyByteToShort(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>short[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>short[]</code> array.
-     */
-    public static short[] byteToShort(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % SHORT_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / SHORT_SIZE;
-        final short[] array = new short[len];
-        copyByteToShort(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>short[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>short</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] shortToByte(short[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[SHORT_SIZE * len];
-        copyShortToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>short[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] shortToByte(short[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[SHORT_SIZE * data.length];
-        copyShortToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>char[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>char</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] charToByte(char[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[CHAR_SIZE * len];
-        copyCharToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>char[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] charToByte(char[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[CHAR_SIZE * data.length];
-        copyCharToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into an <code>int[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>int</code> values to convert.
-     * @return The <code>int[]</code> array.
-     */
-    public static int[] byteToInt(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final int[] array = new int[len];
-        copyByteToInt(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into an <code>int[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>int[]</code> array.
-     */
-    public static int[] byteToInt(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % INT_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / INT_SIZE;
-        final int[] array = new int[len];
-        copyByteToInt(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>int[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>int</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] intToByte(int[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[INT_SIZE * len];
-        copyIntToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>int[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] intToByte(int[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[INT_SIZE * data.length];
-        copyIntToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>long[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>long</code> values to convert.
-     * @return The <code>long[]</code> array.
-     */
-    public static long[] byteToLong(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final long[] array = new long[len];
-        copyByteToLong(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>long[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>long[]</code> array.
-     */
-    public static long[] byteToLong(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % LONG_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / LONG_SIZE;
-        final long[] array = new long[len];
-        copyByteToLong(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>long[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>long</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] longToByte(long[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[LONG_SIZE * len];
-        copyLongToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>long[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] longToByte(long[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[LONG_SIZE * data.length];
-        copyLongToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>float[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>float</code> values to convert.
-     * @return The <code>float[]</code> array.
-     */
-    public static float[] byteToFloat(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final float[] array = new float[len];
-        copyByteToFloat(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>float[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>float[]</code> array.
-     */
-    public static float[] byteToFloat(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % FLOAT_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / FLOAT_SIZE;
-        final float[] array = new float[len];
-        copyByteToFloat(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>float[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>float</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] floatToByte(float[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[FLOAT_SIZE * len];
-        copyFloatToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>float[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] floatToByte(float[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[FLOAT_SIZE * data.length];
-        copyFloatToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>double[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @param start The position in the <var>byteArr</var> to start the conversion.
-     * @param len The number of <code>double</code> values to convert.
-     * @return The <code>double[]</code> array.
-     */
-    public static double[] byteToDouble(byte[] byteArr, ByteOrder byteOrder, int start, int len)
-    {
-        final double[] array = new double[len];
-        copyByteToDouble(byteArr, start, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>byte[]</code> array into a <code>double[]</code> array.
-     * 
-     * @param byteArr The <code>byte[]</code> to convert.
-     * @param byteOrder The byte order of <var>byteArr</var>.
-     * @return The <code>double[]</code> array.
-     */
-    public static double[] byteToDouble(byte[] byteArr, ByteOrder byteOrder)
-    {
-        if (byteArr.length % DOUBLE_SIZE != 0)
-        {
-            throw new IllegalArgumentException("Length of byteArr does not match size of data type");
-        }
-        final int len = byteArr.length / DOUBLE_SIZE;
-        final double[] array = new double[len];
-        copyByteToDouble(byteArr, 0, array, 0, len, byteOrder);
-        return array;
-    }
-
-    /**
-     * Converts a <code>double[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @param start The position in <var>data</var> to start the conversion.
-     * @param len The number of <code>double</code> values to convert.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] doubleToByte(double[] data, ByteOrder byteOrder, int start, int len)
-    {
-        final byte[] byteArr = new byte[DOUBLE_SIZE * len];
-        copyDoubleToByte(data, start, byteArr, 0, len, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts a <code>double[]</code> array to a <code>byte[]</code> array.
-     * 
-     * @param data The array to convert.
-     * @param byteOrder The byte order of the returned <code>byte[]</code>.
-     * @return The converted <code>byte[]</code> array.
-     */
-    public static byte[] doubleToByte(double[] data, ByteOrder byteOrder)
-    {
-        final byte[] byteArr = new byte[DOUBLE_SIZE * data.length];
-        copyDoubleToByte(data, 0, byteArr, 0, data.length, byteOrder);
-        return byteArr;
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/convert/NativeTaggedArray.java b/base/source/java/ch/systemsx/cisd/base/convert/NativeTaggedArray.java
deleted file mode 100644
index da8c6b8fcad0e763c32bb75fc5bca37af97cccd2..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/convert/NativeTaggedArray.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.convert;
-
-import static ch.systemsx.cisd.base.convert.NativeData.DOUBLE_SIZE;
-import static ch.systemsx.cisd.base.convert.NativeData.FLOAT_SIZE;
-import static ch.systemsx.cisd.base.convert.NativeData.INT_SIZE;
-import static ch.systemsx.cisd.base.convert.NativeData.LONG_SIZE;
-import static ch.systemsx.cisd.base.convert.NativeData.SHORT_SIZE;
-
-import ch.systemsx.cisd.base.convert.NativeData.ByteOrder;
-import ch.systemsx.cisd.base.mdarray.MDAbstractArray;
-import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
-import ch.systemsx.cisd.base.mdarray.MDFloatArray;
-import ch.systemsx.cisd.base.mdarray.MDIntArray;
-import ch.systemsx.cisd.base.mdarray.MDLongArray;
-import ch.systemsx.cisd.base.mdarray.MDShortArray;
-
-/**
- * A utility class that supports encoding and decoding of arrays of primitive number types to byte
- * arrays such that the characteristics of the number type (float or integer, byte order, element
- * size) and the dimensions are known and can be checked for correctness when converted back to the
- * number type.
- * 
- * @author Bernd Rinn
- */
-public class NativeTaggedArray
-{
-
-    private final static NativeData.ByteOrder NATIVE_BYTE_ORDER = NativeData.getNativeByteOrder();
-
-    private static final int MAGIC_SIZE = 3;
-
-    private static final int RANK_SIZE = 1;
-
-    private static final int RANK_INDEX = 3;
-
-    private static final int LENGTH_SIZE = 4;
-
-    private static final int LENGTH_INDEX = 4;
-
-    private static final int RANK_1 = 1;
-
-    /**
-     * A class to return the array encoding and dimensions of a native tagged array.
-     */
-    public static class NativeArrayTag
-    {
-        private final NativeArrayEncoding encoding;
-
-        private final int[] dimensions;
-
-        NativeArrayTag(NativeArrayEncoding encoding, int[] dimensions)
-        {
-            this.encoding = encoding;
-            this.dimensions = dimensions;
-        }
-
-        /**
-         * Returns the {@link NativeArrayEncoding} of the array.
-         */
-        public NativeArrayEncoding getEncoding()
-        {
-            return encoding;
-        }
-
-        /**
-         * Resurns the dimensions of the array.
-         */
-        public int[] getDimensions()
-        {
-            return dimensions;
-        }
-    }
-
-    /**
-     * Returns the array tag of the native tagged array encoded in <var>data</var>, or
-     * <code>null</code>, if <var>data</var> does not encode a native tagged array.
-     */
-    public static NativeArrayTag tryGetArrayTag(byte[] data)
-    {
-        final NativeArrayEncoding encodingOrNull = NativeArrayEncoding.tryGetEncoding(data);
-        if (encodingOrNull == null)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank,
-                encodingOrNull.getByteOrder());
-        return new NativeArrayTag(encodingOrNull, dimensions);
-    }
-
-    //
-    // Float
-    //
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(float[] data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(float[] data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetFloatEncoding(byteOrder, (byte) FLOAT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + 1 * LENGTH_SIZE;
-        final byte[] byteArr = new byte[headerSize + FLOAT_SIZE * data.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = RANK_1;
-        NativeData.copyIntToByte(new int[]
-            { data.length }, 0, byteArr, LENGTH_INDEX, 1, byteOrder);
-        NativeData.copyFloatToByte(data, 0, byteArr, headerSize, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(MDFloatArray data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(MDFloatArray data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetFloatEncoding(byteOrder, (byte) FLOAT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final byte rank = (byte) data.rank();
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + rank * LENGTH_SIZE;
-        final float[] flatDataArray = data.getAsFlatArray();
-        final byte[] byteArr = new byte[headerSize + FLOAT_SIZE * flatDataArray.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = rank;
-        NativeData.copyIntToByte(data.dimensions(), 0, byteArr, LENGTH_INDEX, rank, byteOrder);
-        NativeData.copyFloatToByte(flatDataArray, 0, byteArr, headerSize, flatDataArray.length,
-                byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a float array or <code>null</code>, if
-     * <var>data</var> is not a tagged 1D float array.
-     */
-    public static float[] tryToFloatArray1D(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isInteger() || encoding.getSizeInBytes() != FLOAT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        if (rank != 1)
-        {
-            return null;
-        }
-        final int[] dimensions = new int[1];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, 1, encoding.getByteOrder());
-        if (dimensions[0] * FLOAT_SIZE + LENGTH_INDEX + LENGTH_SIZE != data.length)
-        {
-            return null;
-        }
-        final float[] floatData = new float[dimensions[0]];
-        NativeData.copyByteToFloat(data, LENGTH_INDEX + LENGTH_SIZE, floatData, 0,
-                floatData.length, encoding.getByteOrder());
-        return floatData;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a {@link MDFloatArray} or <code>null</code>, if
-     * <var>data</var> is not a tagged (multi-dimensional) float array.
-     */
-    public static MDFloatArray tryToFloatArray(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isInteger() || encoding.getSizeInBytes() != FLOAT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank, encoding.getByteOrder());
-        final int length = MDAbstractArray.getLength(dimensions);
-        final int headerSize = LENGTH_INDEX + rank * LENGTH_SIZE;
-        if (length * FLOAT_SIZE + headerSize != data.length)
-        {
-            return null;
-        }
-        final float[] intData = new float[length];
-        NativeData.copyByteToFloat(data, headerSize, intData, 0, intData.length,
-                encoding.getByteOrder());
-        return new MDFloatArray(intData, dimensions);
-    }
-
-    //
-    // Double
-    //
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(double[] data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(double[] data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetFloatEncoding(byteOrder, (byte) DOUBLE_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + 1 * LENGTH_SIZE;
-        final byte[] byteArr = new byte[headerSize + DOUBLE_SIZE * data.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = RANK_1;
-        NativeData.copyIntToByte(new int[]
-            { data.length }, 0, byteArr, LENGTH_INDEX, 1, byteOrder);
-        NativeData.copyDoubleToByte(data, 0, byteArr, headerSize, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(MDDoubleArray data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(MDDoubleArray data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetFloatEncoding(byteOrder, (byte) DOUBLE_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final byte rank = (byte) data.rank();
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + rank * LENGTH_SIZE;
-        final double[] flatDataArray = data.getAsFlatArray();
-        final byte[] byteArr = new byte[headerSize + DOUBLE_SIZE * flatDataArray.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = rank;
-        NativeData.copyIntToByte(data.dimensions(), 0, byteArr, LENGTH_INDEX, rank, byteOrder);
-        NativeData.copyDoubleToByte(flatDataArray, 0, byteArr, headerSize, flatDataArray.length,
-                byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a double array or <code>null</code>, if
-     * <var>data</var> is not a tagged 1D double array.
-     */
-    public static double[] tryToDoubleArray1D(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isInteger() || encoding.getSizeInBytes() != DOUBLE_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        if (rank != 1)
-        {
-            return null;
-        }
-        final int[] dimensions = new int[1];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, 1, encoding.getByteOrder());
-        if (dimensions[0] * DOUBLE_SIZE + LENGTH_INDEX + LENGTH_SIZE != data.length)
-        {
-            return null;
-        }
-        final double[] doubleData = new double[dimensions[0]];
-        NativeData.copyByteToDouble(data, LENGTH_INDEX + LENGTH_SIZE, doubleData, 0,
-                doubleData.length, encoding.getByteOrder());
-        return doubleData;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a {@link MDDoubleArray} or <code>null</code>, if
-     * <var>data</var> is not a tagged (multi-dimensional) double array.
-     */
-    public static MDDoubleArray tryToDoubleArray(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isInteger() || encoding.getSizeInBytes() != DOUBLE_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank, encoding.getByteOrder());
-        final int length = MDAbstractArray.getLength(dimensions);
-        final int headerSize = LENGTH_INDEX + rank * LENGTH_SIZE;
-        if (length * DOUBLE_SIZE + headerSize != data.length)
-        {
-            return null;
-        }
-        final double[] intData = new double[length];
-        NativeData.copyByteToDouble(data, headerSize, intData, 0, intData.length,
-                encoding.getByteOrder());
-        return new MDDoubleArray(intData, dimensions);
-    }
-
-    //
-    // Short
-    //
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(short[] data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(short[] data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) SHORT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + 1 * LENGTH_SIZE;
-        final byte[] byteArr = new byte[headerSize + SHORT_SIZE * data.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = RANK_1;
-        NativeData.copyIntToByte(new int[]
-            { data.length }, 0, byteArr, LENGTH_INDEX, 1, byteOrder);
-        NativeData.copyShortToByte(data, 0, byteArr, headerSize, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(MDShortArray data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(MDShortArray data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) SHORT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final byte rank = (byte) data.rank();
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + rank * LENGTH_SIZE;
-        final short[] flatDataArray = data.getAsFlatArray();
-        final byte[] byteArr = new byte[headerSize + SHORT_SIZE * flatDataArray.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = rank;
-        NativeData.copyIntToByte(data.dimensions(), 0, byteArr, LENGTH_INDEX, rank, byteOrder);
-        NativeData.copyShortToByte(flatDataArray, 0, byteArr, headerSize, flatDataArray.length,
-                byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a short array or <code>null</code>, if
-     * <var>data</var> is not a tagged 1D short array.
-     */
-    public static short[] tryToShortArray1D(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint()
-                || encoding.getSizeInBytes() != SHORT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        if (rank != 1)
-        {
-            return null;
-        }
-        final int[] dimensions = new int[1];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, 1, encoding.getByteOrder());
-        if (dimensions[0] * SHORT_SIZE + LENGTH_INDEX + LENGTH_SIZE != data.length)
-        {
-            return null;
-        }
-        final short[] shortData = new short[dimensions[0]];
-        NativeData.copyByteToShort(data, LENGTH_INDEX + LENGTH_SIZE, shortData, 0,
-                shortData.length, encoding.getByteOrder());
-        return shortData;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a {@link MDShortArray} or <code>null</code>, if
-     * <var>data</var> is not a tagged (multi-dimensional) short array.
-     */
-    public static MDShortArray tryToShortArray(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint()
-                || encoding.getSizeInBytes() != SHORT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank, encoding.getByteOrder());
-        final int length = MDAbstractArray.getLength(dimensions);
-        final int headerSize = LENGTH_INDEX + rank * LENGTH_SIZE;
-        if (length * SHORT_SIZE + headerSize != data.length)
-        {
-            return null;
-        }
-        final short[] intData = new short[length];
-        NativeData.copyByteToShort(data, headerSize, intData, 0, intData.length,
-                encoding.getByteOrder());
-        return new MDShortArray(intData, dimensions);
-    }
-
-    //
-    // Int
-    //
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(int[] data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(int[] data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) INT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + 1 * LENGTH_SIZE;
-        final byte[] byteArr = new byte[headerSize + INT_SIZE * data.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = RANK_1;
-        NativeData.copyIntToByte(new int[]
-            { data.length }, 0, byteArr, LENGTH_INDEX, 1, byteOrder);
-        NativeData.copyIntToByte(data, 0, byteArr, headerSize, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(MDIntArray data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(MDIntArray data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) INT_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final byte rank = (byte) data.rank();
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + rank * LENGTH_SIZE;
-        final int[] flatDataArray = data.getAsFlatArray();
-        final byte[] byteArr = new byte[headerSize + INT_SIZE * flatDataArray.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = rank;
-        NativeData.copyIntToByte(data.dimensions(), 0, byteArr, LENGTH_INDEX, rank, byteOrder);
-        NativeData.copyIntToByte(flatDataArray, 0, byteArr, headerSize, flatDataArray.length,
-                byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as an int array or <code>null</code>, if
-     * <var>data</var> is not a tagged 1D int array.
-     */
-    public static int[] tryToIntArray1D(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint() || encoding.getSizeInBytes() != INT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        if (rank != 1)
-        {
-            return null;
-        }
-        final int[] dimensions = new int[1];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, 1, encoding.getByteOrder());
-        if (dimensions[0] * INT_SIZE + LENGTH_INDEX + LENGTH_SIZE != data.length)
-        {
-            return null;
-        }
-        final int[] intData = new int[dimensions[0]];
-        NativeData.copyByteToInt(data, LENGTH_INDEX + LENGTH_SIZE, intData, 0, intData.length,
-                encoding.getByteOrder());
-        return intData;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a {@link MDIntArray} or <code>null</code>, if
-     * <var>data</var> is not a tagged (multi-dimensional) int array.
-     */
-    public static MDIntArray tryToIntArray(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint() || encoding.getSizeInBytes() != INT_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank, encoding.getByteOrder());
-        final int length = MDAbstractArray.getLength(dimensions);
-        final int headerSize = LENGTH_INDEX + rank * LENGTH_SIZE;
-        if (length * INT_SIZE + headerSize != data.length)
-        {
-            return null;
-        }
-        final int[] intData = new int[length];
-        NativeData.copyByteToInt(data, headerSize, intData, 0, intData.length,
-                encoding.getByteOrder());
-        return new MDIntArray(intData, dimensions);
-    }
-
-    //
-    // Long
-    //
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(long[] data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(long[] data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) LONG_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + 1 * LENGTH_SIZE;
-        final byte[] byteArr = new byte[headerSize + LONG_SIZE * data.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = RANK_1;
-        NativeData.copyIntToByte(new int[]
-            { data.length }, 0, byteArr, LENGTH_INDEX, 1, byteOrder);
-        NativeData.copyLongToByte(data, 0, byteArr, headerSize, data.length, byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in native byte order.
-     */
-    public static byte[] toByteArray(MDLongArray data)
-    {
-        return toByteArray(data, NATIVE_BYTE_ORDER);
-    }
-
-    /**
-     * Converts <var>data</var> into a tagged array in given byte order.
-     */
-    public static byte[] toByteArray(MDLongArray data, ByteOrder byteOrder)
-    {
-        final byte[] magic =
-                NativeArrayEncoding.tryGetIntEncoding(byteOrder, (byte) LONG_SIZE).getMagic();
-        assert magic.length == MAGIC_SIZE;
-        final byte rank = (byte) data.rank();
-        final int headerSize = MAGIC_SIZE + RANK_SIZE + rank * LENGTH_SIZE;
-        final long[] flatDataArray = data.getAsFlatArray();
-        final byte[] byteArr = new byte[headerSize + LONG_SIZE * flatDataArray.length];
-        System.arraycopy(magic, 0, byteArr, 0, MAGIC_SIZE);
-        byteArr[RANK_INDEX] = rank;
-        NativeData.copyIntToByte(data.dimensions(), 0, byteArr, LENGTH_INDEX, rank, byteOrder);
-        NativeData.copyLongToByte(flatDataArray, 0, byteArr, headerSize, flatDataArray.length,
-                byteOrder);
-        return byteArr;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a long array or <code>null</code>, if
-     * <var>data</var> is not a tagged 1D long array.
-     */
-    public static long[] tryToLongArray1D(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint()
-                || encoding.getSizeInBytes() != LONG_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        if (rank != 1)
-        {
-            return null;
-        }
-        final int[] dimensions = new int[1];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, 1, encoding.getByteOrder());
-        if (dimensions[0] * LONG_SIZE + LENGTH_INDEX + 1 * LENGTH_SIZE != data.length)
-        {
-            return null;
-        }
-        final long[] longData = new long[dimensions[0]];
-        NativeData.copyByteToLong(data, LENGTH_INDEX + LENGTH_SIZE, longData, 0, longData.length,
-                encoding.getByteOrder());
-        return longData;
-    }
-
-    /**
-     * Returns the tagged array <var>data</var> as a {@link MDLongArray} or <code>null</code>, if
-     * <var>data</var> is not a tagged (multi-dimensional) long array.
-     */
-    public static MDLongArray tryToLongArray(byte[] data)
-    {
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(data);
-        if (encoding == null || encoding.isFloatingPoint()
-                || encoding.getSizeInBytes() != LONG_SIZE)
-        {
-            return null;
-        }
-        final int rank = data[RANK_INDEX];
-        final int[] dimensions = new int[rank];
-        NativeData.copyByteToInt(data, LENGTH_INDEX, dimensions, 0, rank, encoding.getByteOrder());
-        final int length = MDAbstractArray.getLength(dimensions);
-        final int headerSize = LENGTH_INDEX + rank * LENGTH_SIZE;
-        if (length * LONG_SIZE + headerSize != data.length)
-        {
-            return null;
-        }
-        final long[] longData = new long[length];
-        NativeData.copyByteToLong(data, headerSize, longData, 0, longData.length,
-                encoding.getByteOrder());
-        return new MDLongArray(longData, dimensions);
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnel.java b/base/source/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnel.java
deleted file mode 100644
index c874c449eb06cf31a26d1af807f9f6dba9d2cb8f..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnel.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- * An exception for tunneling checked exception through code that doesn't expect it.
- * 
- * @author Bernd Rinn
- */
-public class CheckedExceptionTunnel extends RuntimeException
-{
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Returns an unchecked exception from a <var>checkedException</var>.
-     * 
-     * @param checkedExceptionOrNull The checked exception to tunnel.
-     */
-    public CheckedExceptionTunnel(final Exception checkedExceptionOrNull)
-    {
-        super(checkedExceptionOrNull);
-
-        assert (checkedExceptionOrNull instanceof RuntimeException) == false;
-    }
-    
-    protected CheckedExceptionTunnel(final String msg)
-    {
-        super(msg);
-    }
-
-    protected CheckedExceptionTunnel()
-    {
-    }
-
-    @Override
-    public String getMessage()
-    {
-        if (getCause() != null && getCause().getMessage() != null)
-        {
-            return getCause().getMessage();
-        }
-        return super.getMessage();
-    }
-
-    @Override
-    public String toString()
-    {
-        if (getCause() != null)
-        {
-            return getCause().toString();
-        }
-        return super.toString();
-    }
-
-    @Override
-    public void printStackTrace(PrintStream s)
-    {
-        if (getCause() != null)
-        {
-            getCause().printStackTrace(s);
-        } else
-        {
-            super.printStackTrace(s);
-        }
-    }
-
-    @Override
-    public void printStackTrace(PrintWriter s)
-    {
-        if (getCause() != null)
-        {
-            getCause().printStackTrace(s);
-        } else
-        {
-            super.printStackTrace(s);
-        }
-    }
-
-    /**
-     * Like {@link #printStackTrace()}, but includes the tunnel's stacktrace as well.
-     */
-    public void printFullStackTrace()
-    {
-        printFullStackTrace(System.err);
-    }
-
-    /**
-     * Like {@link #printStackTrace(PrintStream)}, but includes the tunnel's stacktrace as well.
-     */
-    public void printFullStackTrace(PrintStream s)
-    {
-        synchronized (s) {
-            s.println(super.toString());
-            StackTraceElement[] trace = getStackTrace();
-            for (int i=0; i < trace.length; i++)
-                s.println("\tat " + trace[i]);
-
-            Throwable ourCause = getCause();
-            if (ourCause != null)
-            {
-                printStackTraceAsCause(ourCause, s, trace);
-            }
-        }
-    }
-
-    /**
-     * Print our stack trace as a cause for the specified stack trace.
-     */
-    private static void printStackTraceAsCause(Throwable cause, PrintStream s,
-                                        StackTraceElement[] causedTrace)
-    {
-        final StackTraceElement[] trace = cause.getStackTrace();
-        int m = trace.length-1, n = causedTrace.length-1;
-        while (m >= 0 && n >=0 && trace[m].equals(causedTrace[n])) {
-            m--; n--;
-        }
-        final int framesInCommon = trace.length - 1 - m;
-
-        s.println("Caused by: " + cause);
-        for (int i=0; i <= m; i++)
-            s.println("\tat " + trace[i]);
-        if (framesInCommon != 0)
-            s.println("\t... " + framesInCommon + " more");
-
-        final Throwable ourCauseesCause = cause.getCause();
-        if (ourCauseesCause != null)
-        {
-            printStackTraceAsCause(ourCauseesCause, s, trace);
-        }
-    }
-
-    /**
-     * Like {@link #printStackTrace(PrintWriter)}, but includes the tunnel's stacktrace as well.
-     */
-    public void printFullStackTrace(PrintWriter s)
-    {
-        synchronized (s) {
-            s.println(super.toString());
-            StackTraceElement[] trace = getStackTrace();
-            for (int i=0; i < trace.length; i++)
-                s.println("\tat " + trace[i]);
-
-            Throwable ourCause = getCause();
-            if (ourCause != null)
-            {
-                printStackTraceAsCause(ourCause, s, trace);
-            }
-        }
-    }
-
-    /**
-     * Print our stack trace as a cause for the specified stack trace.
-     */
-    private static void printStackTraceAsCause(Throwable cause, PrintWriter s,
-                                        StackTraceElement[] causedTrace)
-    {
-        final StackTraceElement[] trace = cause.getStackTrace();
-        int m = trace.length-1, n = causedTrace.length-1;
-        while (m >= 0 && n >=0 && trace[m].equals(causedTrace[n])) {
-            m--; n--;
-        }
-        final int framesInCommon = trace.length - 1 - m;
-
-        s.println("Caused by: " + cause);
-        for (int i=0; i <= m; i++)
-            s.println("\tat " + trace[i]);
-        if (framesInCommon != 0)
-            s.println("\t... " + framesInCommon + " more");
-
-        final Throwable ourCauseesCause = cause.getCause();
-        if (ourCauseesCause != null)
-        {
-            printStackTraceAsCause(ourCauseesCause, s, trace);
-        }
-    }
-
-    /**
-     * Convenience wrapper for {@link #wrapIfNecessary(Exception)}. If <var>throwable</var> is an
-     * {@link Error}, this method will not return but the error will be thrown.
-     * 
-     * @param throwable The exception to represent by the return value.
-     * @return A {@link RuntimeException} representing the <var>throwable</var>.
-     * @throws Error If <var>throwable</var> is an {@link Error} (except when it is a
-     *             {@link ThreadDeath}, which returns a {@link InterruptedExceptionUnchecked}).
-     */
-    public final static RuntimeException wrapIfNecessary(final Throwable throwable) throws Error
-    {
-        if (throwable instanceof Error)
-        {
-            if (throwable instanceof ThreadDeath)
-            {
-                return new InterruptedExceptionUnchecked();
-            } else
-            {
-                throw (Error) throwable;
-            }
-        }
-        return wrapIfNecessary((Exception) throwable);
-    }
-
-    /**
-     * Returns a {@link RuntimeException} from an <var>exception</var>. If <var>exception</var> is
-     * already a {@link RuntimeException}, itself is returned, otherwise an appropriate unchecked
-     * equivalent. If no unchecked equivalent exists, a {@link CheckedExceptionTunnel} is returned
-     * with <var>exception</var> as checked exception argument.
-     * 
-     * @param exception The exception to represent by the return value.
-     * @return A {@link RuntimeException} representing the <var>exception</var>.
-     */
-    public final static RuntimeException wrapIfNecessary(final Exception exception)
-    {
-        if (exception instanceof RuntimeException)
-        {
-            return (RuntimeException) exception;
-        }
-        if (exception instanceof IOException)
-        {
-            return new IOExceptionUnchecked((IOException) exception);
-        }
-        if (exception instanceof InterruptedException)
-        {
-            return new InterruptedExceptionUnchecked((InterruptedException) exception);
-        }
-        if (exception instanceof java.util.concurrent.TimeoutException)
-        {
-            return new TimeoutExceptionUnchecked((java.util.concurrent.TimeoutException) exception);
-        }
-        return new CheckedExceptionTunnel(exception);
-    }
-
-    /**
-     * Returns the original exception before being wrapped, if the exception has been wrapped, or
-     * <var>exception</var> otherwise.
-     */
-    public final static Exception unwrapIfNecessary(final Exception exception)
-    {
-        assert exception != null : "Exception not specified.";
-        if (exception instanceof CheckedExceptionTunnel)
-        {
-            // We are sure that the wrapped exception is an 'Exception'.
-            final Exception causeOrNull = (Exception) exception.getCause();
-            if (causeOrNull != null)
-            {
-                return causeOrNull;
-            }
-        }
-        return exception;
-    }
-
-    /**
-     * Returns the original throwable before being wrapped, if the throwable has been wrapped, or
-     * <var>exception</var> otherwise.
-     */
-    public final static Throwable unwrapIfNecessary(final Throwable throwable)
-    {
-        assert throwable != null : "Exception not specified.";
-        if (throwable instanceof Error)
-        {
-            return throwable;
-        } else
-        {
-            return unwrapIfNecessary((Exception) throwable);
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/IErrorStrategy.java b/base/source/java/ch/systemsx/cisd/base/exceptions/IErrorStrategy.java
deleted file mode 100644
index cfd17ee2f1c9152c411ee54e673a40f1b02e6f19..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/IErrorStrategy.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2012 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-/**
- * A strategy role for dealing with errors.
- * 
- * @author Bernd Rinn
- */
-public interface IErrorStrategy
-{
-    /**
-     * The default error strategy, just re-throws the exception.
-     */
-    public static final IErrorStrategy DEFAULT_ERROR_STRATEGY = new IErrorStrategy()
-        {
-            @Override
-            public void dealWithError(Throwable th) throws RuntimeException, Error
-            {
-                throw CheckedExceptionTunnel.wrapIfNecessary(th);
-            }
-
-            @Override
-            public void warning(String message)
-            {
-                System.err.println(message);
-            }
-        };
-
-    /**
-     * Called when an exception <var>ex</var> has occurred. Can, but doesn't have to, abort the
-     * operation by re-throwing the exception.
-     * 
-     * @throws RuntimeException if the operation should be aborted.
-     */
-    public void dealWithError(final Throwable th) throws RuntimeException, Error;
-
-    /**
-     * Called to issue a warning message.
-     */
-    public void warning(String message);
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/IOExceptionUnchecked.java b/base/source/java/ch/systemsx/cisd/base/exceptions/IOExceptionUnchecked.java
deleted file mode 100644
index caa7b39f031bef15fd3cb0a3c30caf0e9db13abf..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/IOExceptionUnchecked.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-import java.io.IOException;
-
-/**
- * A {@link CheckedExceptionTunnel} for an {@link IOException}.
- * 
- * @author Bernd Rinn
- */
-public class IOExceptionUnchecked extends CheckedExceptionTunnel
-{
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Returns an <code>IOExceptionUnchecked</code> from a <code>IOException</code>.
-     * 
-     * @param checkedException The checked exception to tunnel.
-     */
-    public IOExceptionUnchecked(final IOException checkedException)
-    {
-        super(checkedException);
-
-        assert checkedException != null;
-    }
-
-    /**
-     * Returns an <code>IOExceptionUnchecked</code> from a newly created <code>IOException</code>
-     * with given <var>msg</var>.
-     * 
-     * @param msg The checked exception to tunnel.
-     */
-    public IOExceptionUnchecked(final String msg)
-    {
-        this(new IOException(msg));
-    }
-
-    private static IOException createIOException(final Throwable throwable)
-    {
-        final IOException ioe =
-                new IOException(throwable.getClass().getSimpleName() + ": "
-                        + throwable.getMessage());
-        ioe.initCause(throwable);
-        return ioe;
-    }
-
-    /**
-     * Returns an <code>IOExceptionUnchecked</code> from newly created <code>IOException</code> with
-     * given <var>throwable</var> as its cause.
-     * 
-     * @param throwable The throwable to use the cause of the created <code>IOException</code>.
-     */
-    public IOExceptionUnchecked(final Throwable throwable)
-    {
-        super(createIOException(throwable));
-
-        assert throwable != null;
-    }
-
-    @Override
-    public IOException getCause()
-    {
-        return (IOException) super.getCause();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/InterruptedExceptionUnchecked.java b/base/source/java/ch/systemsx/cisd/base/exceptions/InterruptedExceptionUnchecked.java
deleted file mode 100644
index d4200529ab4d045df5591117741e8efa237cb5f8..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/InterruptedExceptionUnchecked.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-/**
- * Exception that signals that whoever gets it should stop its current work. This is an unchecked
- * equivalent to an {@link InterruptedException}.
- * <p>
- * This is usually triggered by interrupting the thread that the work package is processed in and
- * regularly checking with {@link #check()}.
- * </p>
- * 
- * @author Bernd Rinn
- */
-public class InterruptedExceptionUnchecked extends CheckedExceptionTunnel
-{
-
-    private static final long serialVersionUID = 1L;
-
-    public InterruptedExceptionUnchecked()
-    {
-        super();
-    }
-
-    public InterruptedExceptionUnchecked(final InterruptedException cause)
-    {
-        super(cause);
-    }
-
-    /**
-     * Checks whether the current thread has been interrupted and, if it has, throw a
-     * {@link InterruptedExceptionUnchecked}.
-     */
-    public final static void check() throws InterruptedExceptionUnchecked
-    {
-        if (Thread.interrupted())
-        {
-            throw new InterruptedExceptionUnchecked();
-        }
-    }
-
-    @Override
-    public InterruptedException getCause()
-    {
-        return (InterruptedException) super.getCause();
-    }
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/StopException.java b/base/source/java/ch/systemsx/cisd/base/exceptions/StopException.java
deleted file mode 100644
index 47c4b5b5d7c009bba7d633150fe6bef5d5c53b80..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/StopException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-/**
- * An exception that signals that <code>Thread.stop()</code> has been called on the current thread.
- *
- * @author Bernd Rinn
- */
-public class StopException extends InterruptedExceptionUnchecked
-{
-
-    private static final long serialVersionUID = 1L;
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/TimeoutExceptionUnchecked.java b/base/source/java/ch/systemsx/cisd/base/exceptions/TimeoutExceptionUnchecked.java
deleted file mode 100644
index 2768a8bce38d42ed07e62b91de6d4fc5838d448c..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/TimeoutExceptionUnchecked.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-import java.util.concurrent.TimeoutException;
-
-/**
- * Exception thrown when a blocking operation times out. This is an unchecked equivalent of
- * {@link TimeoutException}, that is it is derived from {@link CheckedExceptionTunnel}.
- * 
- * @author Bernd Rinn
- */
-public class TimeoutExceptionUnchecked extends CheckedExceptionTunnel
-{
-
-    private static final long serialVersionUID = 1L;
-
-    public TimeoutExceptionUnchecked()
-    {
-    }
-
-    public TimeoutExceptionUnchecked(String msg)
-    {
-        super(msg);
-    }
-
-    public TimeoutExceptionUnchecked(java.util.concurrent.TimeoutException cause)
-    {
-        super(cause);
-    }
-
-    @Override
-    public TimeoutException getCause()
-    {
-        return (TimeoutException) super.getCause();
-    }
-
-}
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/exceptions/package.html b/base/source/java/ch/systemsx/cisd/base/exceptions/package.html
deleted file mode 100644
index b5b2cd121183f1c2d4902c081f0de1c33847d4e7..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/exceptions/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-     "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Exceptions.</title>
-</head>
-<body>
-<p>
-This package provides basic exceptions thrown by CISD software. Note that all exceptions are 
-unchecked.
-</p>
-</body>
-</html> 
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java b/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java
deleted file mode 100644
index bcc9599a2c963b1850a2895cedc1c1137af6aa69..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.image;
-
-import java.awt.image.BufferedImage;
-
-/**
- * Interface for classes which can transform images. The transformation depends only on some
- * parameters and an image as input.
- * 
- * @author Franz-Josef Elmer
- */
-public interface IImageTransformer
-{
-    /**
-     * Transforms the specified image. The transformation must <i>not</i> change the input image.
-     * 
-     * @return The transformed image.
-     */
-    public BufferedImage transform(BufferedImage image);
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java b/base/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java
deleted file mode 100644
index c0c76a2a3f6f0103029487dc2fc4442c25397563..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.image;
-
-import java.io.Serializable;
-
-import ch.systemsx.cisd.base.annotation.JsonObject;
-
-/**
- * Factory creating an {@link IImageTransformer}. The parameters of the transformer should be
- * stored as serializable attributes of concrete implementations of this interface.
- *
- * @author Franz-Josef Elmer
- */
-@JsonObject(value="IImageTransformerFactory")
-public interface IImageTransformerFactory extends Serializable
-{
-    /**
-     * Creates a transformer object based on the attributes of the factory.
-     */
-    public IImageTransformer createTransformer();
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java
deleted file mode 100644
index 5520617fef33a5c16efa9f60226cba32caeefb03..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.image;
-
-import java.awt.image.BufferedImage;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import ch.systemsx.cisd.base.image.IImageTransformer;
-
-/**
- * Interface for classes which can transform images in a streaming mode. The transformation depends
- * only on some parameters and an image as stream of bytes.
- * 
- * @author Bernd Rinn
- */
-public interface IStreamingImageTransformer extends IImageTransformer
-{
-
-    /**
-     * Transforms the image provided as the <var>input</var> stream.
-     * 
-     * @return The transformed image.
-     */
-    public BufferedImage transform(InputStream input);
-
-    /**
-     * Transforms the image provided as the <var>input</var> stream.
-     * 
-     * @return The transformed image as a byte array that constitutes a PNG file.
-     */
-    public byte[] transformToPNG(InputStream input);
-
-    /**
-     * Transforms the image provided as the <var>input</var> stream. Writes the transformed PNG file
-     * to the <var>output</var> stream.
-     */
-    public void transformToPNGStream(InputStream input, OutputStream output);
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java
deleted file mode 100644
index 6b4e06f561e1534c79f6a995c37dde8ea4d233f8..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.image;
-
-import ch.systemsx.cisd.base.annotation.JsonObject;
-import ch.systemsx.cisd.base.image.IImageTransformerFactory;
-
-/**
- * Factory creating an {@link IStreamingImageTransformer}. The parameters of the transformer should
- * be stored as serializable attributes of concrete implementations of this interface.
- * 
- * @author Bernd Rinn
- */
-@JsonObject(value="IStreamingImageTransformerFactory")
-public interface IStreamingImageTransformerFactory extends IImageTransformerFactory
-{
-    /**
-     * Creates a transformer object based on the attributes of the factory.
-     */
-    @Override
-    public IStreamingImageTransformer createTransformer();
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/AdapterIInputStreamToInputStream.java b/base/source/java/ch/systemsx/cisd/base/io/AdapterIInputStreamToInputStream.java
deleted file mode 100644
index 08767664cb0a1975fb0603641331ee3571ce97ae..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/AdapterIInputStreamToInputStream.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An adapter for {@link IInputStream} that extends {@link java.io.InputStream}.
- *
- * @author Bernd Rinn
- */
-public class AdapterIInputStreamToInputStream extends InputStream
-{
-
-    private final IInputStream delegate;
-    
-    public AdapterIInputStreamToInputStream(IInputStream delegate)
-    {
-        this.delegate = delegate;
-    }
-    
-    @Override
-    public int available() throws IOException
-    {
-        try
-        {
-            return delegate.available();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public void close() throws IOException
-    {
-        try
-        {
-            delegate.close();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public synchronized void mark(int readlimit)
-    {
-        delegate.mark(readlimit);
-    }
-
-    @Override
-    public boolean markSupported()
-    {
-        return delegate.markSupported();
-    }
-
-    @Override
-    public int read() throws IOException
-    {
-        try
-        {
-            return delegate.read();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public int read(byte[] b, int off, int len) throws IOException
-    {
-        try
-        {
-            return delegate.read(b, off, len);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public int read(byte[] b) throws IOException
-    {
-        try
-        {
-            return delegate.read(b);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public synchronized void reset() throws IOException
-    {
-        try
-        {
-            delegate.reset();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public long skip(long n) throws IOException
-    {
-        try
-        {
-            return delegate.skip(n);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    //
-    // Object
-    //
-    
-    @Override
-    public boolean equals(Object obj)
-    {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return delegate.hashCode();
-    }
-
-    @Override
-    public String toString()
-    {
-        return delegate.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/AdapterIOutputStreamToOutputStream.java b/base/source/java/ch/systemsx/cisd/base/io/AdapterIOutputStreamToOutputStream.java
deleted file mode 100644
index 55b6e5f9c7f79a75f8925d1da3f82a1202ac0e12..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/AdapterIOutputStreamToOutputStream.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An adapter for {@link IOutputStream} that extends {@link java.io.OutputStream}.
- *
- * @author Bernd Rinn
- */
-public class AdapterIOutputStreamToOutputStream extends OutputStream
-{
-
-    private final IOutputStream delegate;
-    
-    public AdapterIOutputStreamToOutputStream(IOutputStream delegate)
-    {
-        this.delegate = delegate;
-    }
-    
-    @Override
-    public void write(int b) throws IOException
-    {
-        try
-        {
-            delegate.write(b);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public void close() throws IOException
-    {
-        try
-        {
-            delegate.close();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public void flush() throws IOException
-    {
-        try
-        {
-            delegate.flush();
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public void write(byte[] b, int off, int len) throws IOException
-    {
-        try
-        {
-            delegate.write(b, off, len);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Override
-    public void write(byte[] b) throws IOException
-    {
-        try
-        {
-            delegate.write(b);
-        } catch (IOExceptionUnchecked ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    //
-    // Object
-    //
-    
-    @Override
-    public boolean equals(Object obj)
-    {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return delegate.hashCode();
-    }
-
-    @Override
-    public String toString()
-    {
-        return delegate.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/AdapterInputStreamToIInputStream.java b/base/source/java/ch/systemsx/cisd/base/io/AdapterInputStreamToIInputStream.java
deleted file mode 100644
index c9e46a5ee442b90fc2c0452e0482eee1a1211c3a..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/AdapterInputStreamToIInputStream.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An adapter for {@link java.io.InputStream} that implements {@link IInputStream}.
- *
- * @author Bernd Rinn
- */
-public class AdapterInputStreamToIInputStream implements IInputStream
-{
-    
-    private final java.io.InputStream delegate;
-    
-    public AdapterInputStreamToIInputStream(java.io.InputStream delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    @Override
-    public int available() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return delegate.available();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void close() throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.close();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void mark(int readlimit)
-    {
-        delegate.mark(readlimit);
-    }
-
-    @Override
-    public boolean markSupported()
-    {
-        return delegate.markSupported();
-    }
-
-    @Override
-    public int read() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return delegate.read();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int read(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return delegate.read(b, off, len);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int read(byte[] b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return delegate.read(b);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void reset() throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.reset();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public long skip(long n) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return delegate.skip(n);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    //
-    // Object
-    //
-    
-    @Override
-    public String toString()
-    {
-        return delegate.toString();
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return delegate.hashCode();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/AdapterOutputStreamToIOutputStream.java b/base/source/java/ch/systemsx/cisd/base/io/AdapterOutputStreamToIOutputStream.java
deleted file mode 100644
index 0720195778b3435d60bff4cfdc19e45ddead39c2..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/AdapterOutputStreamToIOutputStream.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An adapter for {@link java.io.OutputStream} that implements {@link IOutputStream}.
- *
- * @author Bernd Rinn
- */
-public class AdapterOutputStreamToIOutputStream implements IOutputStream
-{
-    
-    private final java.io.OutputStream delegate;
-
-    public AdapterOutputStreamToIOutputStream(java.io.OutputStream delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    //
-    // IOutputStream
-    //
-    
-    @Override
-    public void write(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.write(b, off, len);
-        } catch (IOException ex)
-        {
-            throw new IOExceptionUnchecked(ex);
-        }
-    }
-
-    @Override
-    public void write(byte[] b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.write(b);
-        } catch (IOException ex)
-        {
-            throw new IOExceptionUnchecked(ex);
-        }
-    }
-
-    @Override
-    public void write(int b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.write(b);
-        } catch (IOException ex)
-        {
-            throw new IOExceptionUnchecked(ex);
-        }
-    }
-
-    @Override
-    public void close() throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.close();
-        } catch (IOException ex)
-        {
-            throw new IOExceptionUnchecked(ex);
-        }
-    }
-
-    @Override
-    public void flush() throws IOExceptionUnchecked
-    {
-        try
-        {
-            delegate.flush();
-        } catch (IOException ex)
-        {
-            throw new IOExceptionUnchecked(ex);
-        }
-    }
-
-    @Override
-    public void synchronize() throws IOExceptionUnchecked
-    {
-        flush();
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return delegate.hashCode();
-    }
-
-    @Override
-    public String toString()
-    {
-        return delegate.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFile.java b/base/source/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFile.java
deleted file mode 100644
index 1055b8b0ae106d76073968a0c98d41685001d3ec..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFile.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.EOFException;
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-import ch.systemsx.cisd.base.convert.NativeData;
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An implementation of {@link IRandomAccessFile} based on a {@link ByteBuffer}.
- * <p>
- * Does <i>not</i> implement {@link IRandomAccessFile#readLine()}.
- * 
- * @author Bernd Rinn
- */
-public class ByteBufferRandomAccessFile implements IRandomAccessFile
-{
-
-    private final ByteBuffer buf;
-
-    private void addToLength(int newItemLen)
-    {
-        final int rem = buf.remaining();
-        if (newItemLen > rem)
-        {
-            buf.limit(buf.limit() + (newItemLen - rem));
-        }
-    }
-
-    /**
-     * Creates a {@link IRandomAccessFile} wrapper for the given <var>buf</var>.
-     * 
-     * @param buf The buffer to wrap.
-     * @param initialLength The initially set length (corresponds to the {@link ByteBuffer#limit()}
-     *            ).
-     */
-    public ByteBufferRandomAccessFile(ByteBuffer buf, int initialLength)
-    {
-        this(buf);
-        setLength(initialLength);
-    }
-
-    /**
-     * Creates a {@link IRandomAccessFile} wrapper for the given <var>buf</var>. Does not change the
-     * {@link ByteBuffer#limit()} of <var>buf</var>.
-     * 
-     * @param buf The buffer to wrap.
-     */
-    public ByteBufferRandomAccessFile(ByteBuffer buf)
-    {
-        this.buf = buf;
-    }
-
-    /**
-     * Creates a {@link IRandomAccessFile} wrapper for the given <var>array</var>.
-     * 
-     * @param array The byte array to wrap.
-     * @param initialLength The initially set length.
-     */
-    public ByteBufferRandomAccessFile(byte[] array, int initialLength)
-    {
-        this(array);
-        setLength(initialLength);
-    }
-
-    /**
-     * Creates a {@link IRandomAccessFile} wrapper for the given <var>array</var>. The initial
-     * {@link ByteBuffer#limit()} will be <code>array.length</code>.
-     * 
-     * @param array The byte array to wrap.
-     */
-    public ByteBufferRandomAccessFile(byte[] array)
-    {
-        this(ByteBuffer.wrap(array));
-    }
-
-    /**
-     * Creates a {@link IRandomAccessFile} wrapper for a {@link ByteBuffer} with
-     * <var>capacity</var>. The initial {@link ByteBuffer#limit()} will be <code>0</code>.
-     * 
-     * @param capacity The maximal size of the {@link ByteBuffer}.
-     */
-    public ByteBufferRandomAccessFile(int capacity)
-    {
-        this(ByteBuffer.allocate(capacity));
-        setLength(0);
-    }
-
-    @Override
-    public ByteOrder getByteOrder()
-    {
-        return buf.order();
-    }
-
-    @Override
-    public void setByteOrder(ByteOrder byteOrder)
-    {
-        buf.order(byteOrder);
-    }
-
-    @Override
-    public void readFully(byte[] b) throws IOExceptionUnchecked
-    {
-        readFully(b, 0, b.length);
-    }
-
-    @Override
-    public void readFully(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        if (available0() == -1)
-        {
-            throw new IOExceptionUnchecked(new EOFException());
-        } else
-        {
-            buf.get(b, off, len);
-        }
-    }
-
-    @Override
-    public int skipBytes(int n) throws IOExceptionUnchecked
-    {
-        if (n <= 0)
-        {
-            return 0;
-        }
-        final int pos = buf.position();
-        final int len = buf.limit();
-        final int newpos = Math.min(len, pos + n);
-        buf.position(newpos);
-        return (newpos - pos);
-    }
-
-    @Override
-    public void close() throws IOExceptionUnchecked
-    {
-        // NOOP
-    }
-
-    @Override
-    public int read() throws IOExceptionUnchecked
-    {
-        return buf.get() & 0xff;
-    }
-
-    @Override
-    public int read(byte[] b) throws IOExceptionUnchecked
-    {
-        return read(b, 0, b.length);
-    }
-
-    @Override
-    public int read(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        final int bytesRead = Math.min(available0(), len);
-        if (bytesRead < 0)
-        {
-            return bytesRead;
-        }
-        buf.get(b, off, bytesRead);
-        return bytesRead;
-    }
-
-    @Override
-    public long skip(long n) throws IOExceptionUnchecked
-    {
-        if (n > Integer.MAX_VALUE)
-        {
-            throw new IndexOutOfBoundsException();
-        }
-        return skipBytes((int) n);
-    }
-    
-    private int available0() throws IOExceptionUnchecked
-    {
-        return (buf.remaining() == 0) ? -1 : buf.remaining();
-    }
-
-    @Override
-    public int available() throws IOExceptionUnchecked
-    {
-        return buf.remaining();
-    }
-
-    @Override
-    public void mark(int readlimit)
-    {
-        buf.mark();
-    }
-
-    @Override
-    public void reset() throws IOExceptionUnchecked
-    {
-        buf.reset();
-    }
-
-    @Override
-    public boolean markSupported()
-    {
-        return true;
-    }
-
-    @Override
-    public void flush() throws IOExceptionUnchecked
-    {
-        // NOOP
-    }
-
-    @Override
-    public void synchronize() throws IOExceptionUnchecked
-    {
-        // NOOP
-    }
-
-    @Override
-    public long getFilePointer() throws IOExceptionUnchecked
-    {
-        return buf.position();
-    }
-
-    @Override
-    public void seek(long pos) throws IOExceptionUnchecked
-    {
-        buf.position((int) pos);
-    }
-
-    @Override
-    public long length() throws IOExceptionUnchecked
-    {
-        return buf.limit();
-    }
-
-    @Override
-    public void setLength(long newLength) throws IOExceptionUnchecked
-    {
-        buf.limit((int) newLength);
-    }
-
-    @Override
-    public boolean readBoolean() throws IOExceptionUnchecked
-    {
-        return buf.get() != 0;
-    }
-
-    @Override
-    public byte readByte() throws IOExceptionUnchecked
-    {
-        return buf.get();
-    }
-
-    @Override
-    public int readUnsignedByte() throws IOExceptionUnchecked
-    {
-        return buf.get() & 0xff;
-    }
-
-    @Override
-    public short readShort() throws IOExceptionUnchecked
-    {
-        return buf.getShort();
-    }
-
-    @Override
-    public int readUnsignedShort() throws IOExceptionUnchecked
-    {
-        return buf.getShort() & 0xffff;
-    }
-
-    @Override
-    public char readChar() throws IOExceptionUnchecked
-    {
-        return buf.getChar();
-    }
-
-    @Override
-    public int readInt() throws IOExceptionUnchecked
-    {
-        return buf.getInt();
-    }
-
-    @Override
-    public long readLong() throws IOExceptionUnchecked
-    {
-        return buf.getLong();
-    }
-
-    @Override
-    public float readFloat() throws IOExceptionUnchecked
-    {
-        return buf.getFloat();
-    }
-
-    @Override
-    public double readDouble() throws IOExceptionUnchecked
-    {
-        return buf.getDouble();
-    }
-
-    /**
-     * @throws UnsupportedOperationException
-     */
-    @Override
-    public String readLine() throws UnsupportedOperationException
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String readUTF()
-    {
-        try
-        {
-            final byte[] strBuf = new byte[readUnsignedShort()];
-            buf.get(strBuf);
-            return new String(strBuf, "UTF-8");
-        } catch (UnsupportedEncodingException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void write(int b) throws IOExceptionUnchecked
-    {
-        addToLength(1);
-        buf.put((byte) b);
-    }
-
-    @Override
-    public void write(byte[] b) throws IOExceptionUnchecked
-    {
-        addToLength(b.length);
-        buf.put(b);
-    }
-
-    @Override
-    public void write(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        addToLength(len);
-        buf.put(b, off, len);
-    }
-
-    @Override
-    public void writeBoolean(boolean v) throws IOExceptionUnchecked
-    {
-        addToLength(1);
-        buf.put((byte) (v ? 1 : 0));
-    }
-
-    @Override
-    public void writeByte(int v) throws IOExceptionUnchecked
-    {
-        write((byte) v);
-    }
-
-    @Override
-    public void writeShort(int v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.SHORT_SIZE);
-        buf.putShort((short) v);
-    }
-
-    @Override
-    public void writeChar(int v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.CHAR_SIZE);
-        buf.putChar((char) v);
-    }
-
-    @Override
-    public void writeInt(int v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.INT_SIZE);
-        buf.putInt(v);
-    }
-
-    @Override
-    public void writeLong(long v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.LONG_SIZE);
-        buf.putLong(v);
-    }
-
-    @Override
-    public void writeFloat(float v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.FLOAT_SIZE);
-        buf.putFloat(v);
-    }
-
-    @Override
-    public void writeDouble(double v) throws IOExceptionUnchecked
-    {
-        addToLength(NativeData.DOUBLE_SIZE);
-        buf.putDouble(v);
-    }
-
-    @Override
-    public void writeBytes(String s) throws IOExceptionUnchecked
-    {
-        final int len = s.length();
-        addToLength(len);
-        for (int i = 0; i < len; i++)
-        {
-            buf.put((byte) s.charAt(i));
-        }
-    }
-
-    @Override
-    public void writeChars(String s) throws IOExceptionUnchecked
-    {
-        final int len = s.length();
-        addToLength(NativeData.CHAR_SIZE * len);
-        for (int i = 0; i < len; i++)
-        {
-            final int v = s.charAt(i);
-            buf.put((byte) ((v >>> 8) & 0xFF));
-            buf.put((byte) ((v >>> 0) & 0xFF));
-        }
-    }
-
-    @Override
-    public void writeUTF(String str) throws UnsupportedOperationException
-    {
-        try
-        {
-            final byte[] strBuf = str.getBytes("UTF-8");
-            addToLength(NativeData.SHORT_SIZE + strBuf.length);
-            writeShort(strBuf.length);
-            write(strBuf);
-        } catch (UnsupportedEncodingException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/ICloseable.java b/base/source/java/ch/systemsx/cisd/base/io/ICloseable.java
deleted file mode 100644
index 1f3073e2ee3622bee56533ac7c3f2f787e247db9..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/ICloseable.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * A role that allows to close resource. Like {@link java.io.Closeable} but doesn't throw an
- * {@link IOException} but a {@link IOExceptionUnchecked} instead.
- * 
- * @author Bernd Rinn
- */
-public interface ICloseable
-{
-
-    /**
-     * Closes the resource.
-     */
-    public void close() throws IOExceptionUnchecked;
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/IInputStream.java b/base/source/java/ch/systemsx/cisd/base/io/IInputStream.java
deleted file mode 100644
index c43e11289faa5ccc1738ce4b76ac8412b90d267d..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/IInputStream.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An interface for {@link java.io.InputStream}.
- *
- * @author Bernd Rinn
- */
-public interface IInputStream
-{
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOExceptionUnchecked;
-    
-    /**
-     * @see java.io.InputStream#read(byte[])
-     */
-    public int read(byte b[]) throws IOExceptionUnchecked;
-    
-    /**
-     * @see java.io.InputStream#read(byte[], int, int)
-     */
-    public int read(byte b[], int off, int len) throws IOExceptionUnchecked;
-    
-    /**
-     * @see java.io.InputStream#skip(long)
-     */
-    public long skip(long n) throws IOExceptionUnchecked;
-    
-    /**
-     * @see java.io.InputStream#available()
-     */
-    public int available() throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.InputStream#close()
-     */
-    public void close() throws IOExceptionUnchecked;
-    
-    /**
-     * @see java.io.InputStream#mark(int)
-     */
-    public void mark(int readlimit);
-    
-    /**
-     * @see java.io.InputStream#reset()
-     */
-    public void reset() throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.InputStream#markSupported()
-     */
-    public boolean markSupported();
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/IOutputStream.java b/base/source/java/ch/systemsx/cisd/base/io/IOutputStream.java
deleted file mode 100644
index 7445d49595df8e55e8044c1c18e643cb0b8f9b06..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/IOutputStream.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * An interface for {@link java.io.OutputStream}.
- * 
- * @author Bernd Rinn
- */
-public interface IOutputStream extends ICloseable, ISynchronizable
-{
-    /**
-     * @see java.io.OutputStream#write(int)
-     */
-    public void write(int b) throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.OutputStream#write(byte[])
-     */
-    public void write(byte b[]) throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.OutputStream#write(byte[], int, int)
-     */
-    public void write(byte b[], int off, int len) throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.OutputStream#flush()
-     */
-    public void flush() throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.OutputStream#flush()
-     */
-    @Override
-    public void synchronize() throws IOExceptionUnchecked;
-
-    /**
-     * @see java.io.OutputStream#close()
-     */
-    @Override
-    public void close() throws IOExceptionUnchecked;
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/IRandomAccessFile.java b/base/source/java/ch/systemsx/cisd/base/io/IRandomAccessFile.java
deleted file mode 100644
index 8cd83ec1150ac326f7976f60d12ddf76655e4849..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/IRandomAccessFile.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.Closeable;
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.nio.ByteOrder;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * The interface of {@link java.io.RandomAccessFile}.
- * 
- * @author Bernd Rinn
- */
-public interface IRandomAccessFile extends DataInput, DataOutput, Closeable, IInputStream,
-        IOutputStream
-{
-    /**
-     * Gets the byte-order (endiness) of the random access file. Default is network-byte order
-     * (big-endian).
-     */
-    public ByteOrder getByteOrder();
-
-    /**
-     * Sets the byte-order (endiness) of the random access file.
-     */
-    public void setByteOrder(ByteOrder byteOrder);
-
-    //
-    // RandomAccessFile
-    //
-
-    /**
-     * Returns the current offset in this file.
-     * 
-     * @return the offset from the beginning of the file, in bytes, at which the next read or write
-     *         occurs.
-     * @exception IOExceptionUnchecked if an I/O error occurs.
-     */
-    public long getFilePointer() throws IOExceptionUnchecked;
-
-    /**
-     * Sets the file-pointer offset, measured from the beginning of this file, at which the next
-     * read or write occurs. The offset may be set beyond the end of the file. Setting the offset
-     * beyond the end of the file does not change the file length. The file length will change only
-     * by writing after the offset has been set beyond the end of the file.
-     * 
-     * @param pos the offset position, measured in bytes from the beginning of the file, at which to
-     *            set the file pointer.
-     * @exception IOExceptionUnchecked if <code>pos</code> is less than <code>0</code> or if an I/O
-     *                error occurs.
-     */
-    public void seek(long pos) throws IOExceptionUnchecked;
-
-    /**
-     * Returns the length of this file.
-     * 
-     * @return the length of this file, measured in bytes.
-     * @exception IOExceptionUnchecked if an I/O error occurs.
-     */
-    public long length() throws IOExceptionUnchecked;
-
-    /**
-     * Sets the length of this file.
-     * <p>
-     * If the present length of the file as returned by the <code>length</code> method is greater
-     * than the <code>newLength</code> argument then the file will be truncated. In this case, if
-     * the file offset as returned by the <code>getFilePointer</code> method is greater than
-     * <code>newLength</code> then after this method returns the offset will be equal to
-     * <code>newLength</code>.
-     * <p>
-     * If the present length of the file as returned by the <code>length</code> method is smaller
-     * than the <code>newLength</code> argument then the file will be extended. In this case, the
-     * contents of the extended portion of the file are not defined.
-     * 
-     * @param newLength The desired length of the file
-     * @exception IOExceptionUnchecked If an I/O error occurs
-     */
-    public void setLength(long newLength) throws IOExceptionUnchecked;
-
-    //
-    // DataInput
-    //
-
-    /**
-     * @see DataInput#readFully(byte[])
-     */
-    @Override
-    public void readFully(byte b[]) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readFully(byte[], int, int)
-     */
-    @Override
-    public void readFully(byte b[], int off, int len) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#skipBytes(int)
-     */
-    @Override
-    public int skipBytes(int n) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readBoolean()
-     */
-    @Override
-    public boolean readBoolean() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readByte()
-     */
-    @Override
-    public byte readByte() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readUnsignedByte()
-     */
-    @Override
-    public int readUnsignedByte() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readShort()
-     */
-    @Override
-    public short readShort() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readUnsignedShort()
-     */
-    @Override
-    public int readUnsignedShort() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readChar()
-     */
-    @Override
-    public char readChar() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readInt()
-     */
-    @Override
-    public int readInt() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readLong()
-     */
-    @Override
-    public long readLong() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readFloat()
-     */
-    @Override
-    public float readFloat() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readDouble()
-     */
-    @Override
-    public double readDouble() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readLine()
-     */
-    @Override
-    public String readLine() throws IOExceptionUnchecked;
-
-    /**
-     * @see DataInput#readUTF()
-     */
-    @Override
-    public String readUTF() throws IOExceptionUnchecked;
-
-    //
-    // DataOutput
-    //
-
-    /**
-     * @see DataOutput#write(int)
-     */
-    @Override
-    public void write(int b) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#write(byte[])
-     */
-    @Override
-    public void write(byte b[]) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#write(byte[], int, int)
-     */
-    @Override
-    public void write(byte b[], int off, int len) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeBoolean(boolean)
-     */
-    @Override
-    public void writeBoolean(boolean v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeByte(int)
-     */
-    @Override
-    public void writeByte(int v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeShort(int)
-     */
-    @Override
-    public void writeShort(int v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeChar(int)
-     */
-    @Override
-    public void writeChar(int v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeInt(int)
-     */
-    @Override
-    public void writeInt(int v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeLong(long)
-     */
-    @Override
-    public void writeLong(long v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeFloat(float)
-     */
-    @Override
-    public void writeFloat(float v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeDouble(double)
-     */
-    @Override
-    public void writeDouble(double v) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeBytes(String)
-     */
-    @Override
-    public void writeBytes(String s) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeChars(String)
-     */
-    @Override
-    public void writeChars(String s) throws IOExceptionUnchecked;
-
-    /**
-     * @see DataOutput#writeUTF(String)
-     */
-    @Override
-    public void writeUTF(String str) throws IOExceptionUnchecked;
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/ISynchronizable.java b/base/source/java/ch/systemsx/cisd/base/io/ISynchronizable.java
deleted file mode 100644
index 67c15911b38b573d0c67a40dbaee9e7fb17691fe..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/ISynchronizable.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * A roles that allows to synchronize a resource with an underlying resource.
- *
- * @author Bernd Rinn
- */
-public interface ISynchronizable
-{
-
-    /**
-     * Performs a synchronization of the resource.
-     */
-    public void synchronize() throws IOExceptionUnchecked;
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/io/RandomAccessFileImpl.java b/base/source/java/ch/systemsx/cisd/base/io/RandomAccessFileImpl.java
deleted file mode 100644
index e5f1ce79ed54c9b4e8b9d48e352080a110babaf2..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/io/RandomAccessFileImpl.java
+++ /dev/null
@@ -1,648 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import static ch.systemsx.cisd.base.convert.NativeData.changeByteOrder;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.ByteOrder;
-import java.nio.channels.FileChannel;
-
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * The file implementation of {@link IRandomAccessFile}.
- * 
- * @author Bernd Rinn
- */
-public class RandomAccessFileImpl implements IRandomAccessFile
-{
-
-    private final RandomAccessFile randomAccessFile;
-
-    private ByteOrder byteOrder = ByteOrder.BIG_ENDIAN;
-
-    private boolean changeByteOrder = ByteOrder.LITTLE_ENDIAN.equals(byteOrder);
-
-    private long markedPosition = -1;
-
-    public RandomAccessFileImpl(RandomAccessFile randomAccessFile)
-    {
-        this.randomAccessFile = randomAccessFile;
-    }
-
-    public RandomAccessFileImpl(String name, String mode) throws IOExceptionUnchecked
-    {
-        try
-        {
-            this.randomAccessFile = new RandomAccessFile(name, mode);
-        } catch (FileNotFoundException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    public RandomAccessFileImpl(File file, String mode) throws IOExceptionUnchecked
-    {
-        try
-        {
-            this.randomAccessFile = new RandomAccessFile(file, mode);
-        } catch (FileNotFoundException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    public final FileDescriptor getFD() throws IOException
-    {
-        return randomAccessFile.getFD();
-    }
-
-    public final FileChannel getChannel()
-    {
-        return randomAccessFile.getChannel();
-    }
-
-    @Override
-    public ByteOrder getByteOrder()
-    {
-        return byteOrder;
-    }
-
-    @Override
-    public void setByteOrder(ByteOrder byteOrder)
-    {
-        this.byteOrder = byteOrder;
-        this.changeByteOrder = ByteOrder.LITTLE_ENDIAN.equals(byteOrder);
-    }
-
-    @Override
-    public int read() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.read();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int read(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.read(b, off, len);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int read(byte[] b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.read(b);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void readFully(byte[] b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.readFully(b);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void readFully(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.readFully(b, off, len);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int skipBytes(int n) throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.skipBytes(n);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void write(int b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.write(b);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void write(byte[] b) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.write(b);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void write(byte[] b, int off, int len) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.write(b, off, len);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public long getFilePointer() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.getFilePointer();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void seek(long pos) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.seek(pos);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public long length() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.length();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void setLength(long newLength) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.setLength(newLength);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void close() throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.close();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final boolean readBoolean() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.readBoolean();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final byte readByte() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.readByte();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final int readUnsignedByte() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.readUnsignedByte();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final short readShort() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final short s = randomAccessFile.readShort();
-            return changeByteOrder ? changeByteOrder(s) : s;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final int readUnsignedShort() throws IOExceptionUnchecked
-    {
-        return readShort() & 0xffff;
-    }
-
-    @Override
-    public final char readChar() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final char c = randomAccessFile.readChar(); 
-            return changeByteOrder ? changeByteOrder(c) : c;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final int readInt() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final int i = randomAccessFile.readInt();
-            return changeByteOrder ? changeByteOrder(i) : i;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final long readLong() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final long l = randomAccessFile.readLong();
-            return changeByteOrder ? changeByteOrder(l) : l;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final float readFloat() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final float f = randomAccessFile.readFloat();
-            return changeByteOrder ? changeByteOrder(f) : f;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final double readDouble() throws IOExceptionUnchecked
-    {
-        try
-        {
-            final double d = randomAccessFile.readDouble();
-            return changeByteOrder ? changeByteOrder(d) : d;
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final String readLine() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.readLine();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final String readUTF() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return randomAccessFile.readUTF();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeBoolean(boolean v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeBoolean(v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeByte(int v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeByte(v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeShort(int v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeShort(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeChar(int v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeChar(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeInt(int v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeInt(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeLong(long v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeLong(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeFloat(float v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeFloat(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeDouble(double v) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeDouble(changeByteOrder ? changeByteOrder(v) : v);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeBytes(String s) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeBytes(s);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeChars(String s) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeChars(s);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public final void writeUTF(String str) throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.writeUTF(str);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public long skip(long n) throws IOExceptionUnchecked
-    {
-        if (n <= 0)
-        {
-            return 0;
-        }
-        try
-        {
-            final long pos = randomAccessFile.getFilePointer();
-            final long len = randomAccessFile.length();
-            final long newpos = Math.min(len, pos + n);
-            randomAccessFile.seek(newpos);
-            return (int) (newpos - pos);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public int available() throws IOExceptionUnchecked
-    {
-        try
-        {
-            return (int) Math.min(randomAccessFile.length() - randomAccessFile.getFilePointer(), Integer.MAX_VALUE);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void mark(int readlimit)
-    {
-        try
-        {
-            markedPosition = randomAccessFile.getFilePointer();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public void reset() throws IOExceptionUnchecked
-    {
-        if (markedPosition == -1)
-        {
-            throw new IOExceptionUnchecked(new IOException("mark() not called"));
-        }
-        try
-        {
-            randomAccessFile.seek(markedPosition);
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    @Override
-    public boolean markSupported()
-    {
-        return true;
-    }
-
-    @Override
-    public void flush() throws IOExceptionUnchecked
-    {
-        // NOOP
-    }
-
-    @Override
-    public void synchronize() throws IOExceptionUnchecked
-    {
-        try
-        {
-            randomAccessFile.getFD().sync();
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        return randomAccessFile.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        return randomAccessFile.equals(obj);
-    }
-
-    @Override
-    public String toString()
-    {
-        return randomAccessFile.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDAbstractArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDAbstractArray.java
deleted file mode 100644
index d2dd83829019a4a99cf5268e0b6f98641e9a2c61..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDAbstractArray.java
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.Serializable;
-import java.util.Iterator;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ClassUtils;
-
-/**
- * Base class of a multi-dimensional array. The <var>dimensions</var> of an array are provided
- * separately from the data as a <code>int[]</code>.
- * <p>
- * The array can grow or shrink in the first dimension (<var>dimensions[0]</var>). Dimensions
- * <code>1...n</code> are static. They are said to form a <i>hyper-row</i>.
- * 
- * @author Bernd Rinn
- */
-public abstract class MDAbstractArray<T> implements Serializable,
-        Iterable<MDAbstractArray<T>.ArrayEntry>
-{
-    private static final long serialVersionUID = 1L;
-
-    protected final int[] dimensions;
-
-    protected int hyperRowLength;
-
-    protected int capacityHyperRows;
-
-    protected int size;
-
-    /**
-     * A class to represent an entry (index and value) of a {@link MDArray}, used for iteration.
-     */
-    public class ArrayEntry
-    {
-        private final int linearIndex;
-
-        ArrayEntry(int linearIndex)
-        {
-            this.linearIndex = linearIndex;
-        }
-
-        /**
-         * The multi-dimensional index of this entry.
-         */
-        public int[] getIndex()
-        {
-            return computeReverseIndex(linearIndex);
-        }
-
-        /**
-         * The linear index of this entry.
-         */
-        public int getLinearIndex()
-        {
-            return linearIndex;
-        }
-
-        /**
-         * The value of this entry.
-         */
-        public T getValue()
-        {
-            return getAsObject(linearIndex);
-        }
-    }
-
-    protected MDAbstractArray(int[] dimensions, int arrayLength, int capacityHyperRows)
-    {
-        assert dimensions != null;
-
-        this.dimensions = dimensions;
-        this.hyperRowLength = computeHyperRowLength(dimensions);
-        if (hyperRowLength == 0)
-        {
-            this.capacityHyperRows = 0;
-            this.size = 0;
-        } else
-        {
-            if (arrayLength % hyperRowLength != 0)
-            {
-                throw new IllegalArgumentException("Actual array length " + arrayLength
-                        + " does not match hyper-row length " + hyperRowLength + ".");
-            }
-            this.capacityHyperRows =
-                    (capacityHyperRows > 0) ? capacityHyperRows : Math.max(dimensions[0],
-                            arrayLength / hyperRowLength);
-            this.size = dimensions[0] * hyperRowLength;
-        }
-    }
-
-    protected int computeHyperRowLength(@SuppressWarnings("hiding")
-    int[] dimensions)
-    {
-        int hyperRowLen = 1;
-        for (int i = 1; i < dimensions.length; ++i)
-        {
-            hyperRowLen *= dimensions[i];
-        }
-        return hyperRowLen;
-    }
-
-    /**
-     * Returns the rank of the array.
-     */
-    public int rank()
-    {
-        return dimensions.length;
-    }
-
-    /**
-     * Returns the extent of the array along its <var>dim</var>-th axis.
-     */
-    public int size(int dim)
-    {
-        assert dim < dimensions.length;
-
-        return dimensions[dim];
-    }
-
-    /**
-     * Returns a copy of the dimensions of the multi-dimensional array.
-     */
-    public int[] dimensions()
-    {
-        return dimensions.clone();
-    }
-
-    /**
-     * Returns a copy of the dimensions of the multi-dimensional array as <code>long[]</code>.
-     */
-    public long[] longDimensions()
-    {
-        final long[] dimensionsCopy = new long[dimensions.length];
-        for (int i = 0; i < dimensionsCopy.length; ++i)
-        {
-            dimensionsCopy[i] = dimensions[i];
-        }
-        return dimensionsCopy;
-    }
-
-    /**
-     * Returns the number of elements in the array.
-     */
-    public int size()
-    {
-        return size;
-    }
-    
-    /**
-     * Returns the current number of hyper rows of of this array.
-     */
-    public int numberOfHyperRows()
-    {
-        return numberOfHyperRows();
-    }
-
-    /**
-     * Return an object which has the same value as the element of the array specified by
-     * <var>linearIndex</var>.
-     * 
-     * @param linearIndex The index in the linear array returned by {@link #getAsFlatArray()}.
-     * @return The value at the specified index.
-     */
-    public abstract T getAsObject(int linearIndex);
-
-    /**
-     * Return an object which has the same value as the element of the array specified by
-     * <var>indices</var>.
-     */
-    public abstract T getAsObject(int... indices);
-
-    /**
-     * Sets the element of the array specified by <var>indices</var> to the particular
-     * <var>value</var>.
-     */
-    public abstract void setToObject(T value, int... indices);
-
-    /**
-     * Sets the element of the array specified by <var>linearIndex</var> to the particular
-     * <var>value</var>.
-     * 
-     * @param value The new value to set.
-     * @param linearIndex The index in the linear array returned by {@link #getAsFlatArray()}.
-     */
-    public abstract void setToObject(T value, int linearIndex);
-
-    /**
-     * Returns the array in flattened form. Changes to the returned object will change the
-     * multi-dimensional array directly.
-     */
-    public abstract Object getAsFlatArray();
-
-    /**
-     * Returns a copy of the array in flattened form. Changes to the returned object will <i>not</i>
-     * change the multi-dimensional array directly.
-     */
-    public abstract Object getCopyAsFlatArray();
-
-    protected abstract void adaptCapacityHyperRows();
-
-    /**
-     * Returns the capacity of elements in the array.
-     */
-    public abstract int capacity();
-
-    /**
-     * Increase the number of hyper-rows by <var>count</var>. Doubles the capacity if needed.
-     * 
-     * @return The new number of rows.
-     */
-    public int incNumberOfHyperRows(int count)
-    {
-        dimensions[0] += count;
-        if (dimensions[0] > capacityHyperRows)
-        {
-            capacityHyperRows = Math.max(capacityHyperRows * 2, dimensions[0]);
-            adaptCapacityHyperRows();
-        }
-        size += count * hyperRowLength;
-        return dimensions[0];
-    }
-
-    /**
-     * Decrease the number of hyper-rows by <var>count</var>.
-     * 
-     * @return The new number of rows.
-     */
-    public int decNumberOfHyperRows(int count)
-    {
-        dimensions[0] -= count;
-        size -= count * hyperRowLength;
-        return dimensions[0];
-    }
-
-    /**
-     * Computes the linear index for the multi-dimensional <var>indices</var> provided.
-     */
-    public int computeIndex(int... indices)
-    {
-        assert indices != null;
-        assert indices.length == dimensions.length;
-
-        int index = indices[0];
-        for (int i = 1; i < indices.length; ++i)
-        {
-            index = index * dimensions[i] + indices[i];
-        }
-        return index;
-    }
-
-    /**
-     * Computes the multi-dimensional index from the <var>linearIndex</var>.
-     */
-    public int[] computeReverseIndex(int linearIndex)
-    {
-        final int[] index = new int[dimensions.length];
-        int workIndex = linearIndex;
-        int blockSize = size;
-        for (int i = 0; i < dimensions.length; ++i)
-        {
-            blockSize /= dimensions[i];
-            index[i] = workIndex / blockSize;
-            workIndex = workIndex - index[i] * blockSize;
-        }
-        return index;
-    }
-
-    /**
-     * Computes the linear index for the two-dimensional (<var>indexX, indexY</var>) provided.
-     */
-    public int computeIndex(int indexX, int indexY)
-    {
-        assert 2 == dimensions.length;
-
-        return dimensions[1] * indexX + indexY;
-    }
-
-    /**
-     * Computes the linear index for the three-dimensional (<var>indexX, indexY, indexZ</var>)
-     * provided.
-     */
-    public int computeIndex(int indexX, int indexY, int indexZ)
-    {
-        assert 3 == dimensions.length;
-
-        return dimensions[2] * (dimensions[1] * indexX + indexY) + indexZ;
-    }
-
-    /**
-     * Converts the <var>dimensions</var> from <code>long[]</code> to <code>int[]</code>.
-     */
-    public static int[] toInt(final long[] dimensions)
-    {
-        assert dimensions != null;
-
-        final int[] result = new int[dimensions.length];
-        for (int i = 0; i < result.length; ++i)
-        {
-            result[i] = (int) dimensions[i];
-            if (result[i] != dimensions[i])
-            {
-                throw new IllegalArgumentException("Dimension " + i + "  is too large ("
-                        + dimensions[i] + ")");
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Converts the <var>dimensions</var> from <code>int[]</code> to <code>long[]</code>.
-     */
-    public static long[] toLong(final int[] dimensions)
-    {
-        assert dimensions != null;
-
-        final long[] result = new long[dimensions.length];
-        for (int i = 0; i < result.length; ++i)
-        {
-            result[i] = dimensions[i];
-        }
-        return result;
-    }
-
-    /**
-     * Returns the one-dimensional length of the multi-dimensional array defined by
-     * <var>dimensions</var>.
-     * 
-     * @throws IllegalArgumentException If <var>dimensions</var> overflow the <code>int</code> type.
-     */
-    public static int getLength(final int[] dimensions)
-    {
-        return getLength(dimensions, 0);
-    }
-
-    /**
-     * Returns the one-dimensional length of the multi-dimensional array defined by
-     * <var>dimensions</var>. If <code>capacityHyperRows > dimensions[0]</code>, then it will
-     * replace <var>dimensions[0]</var> by <var>capacityHyperRows</var>
-     * 
-     * @throws IllegalArgumentException If <var>dimensions</var> overflow the <code>int</code> type.
-     */
-    public static int getLength(final int[] dimensions, int capacityHyperRows)
-    {
-        assert dimensions != null;
-
-        if (dimensions.length == 0)
-        {
-            return 0;
-        }
-        long length = Math.max(capacityHyperRows, dimensions[0]);
-        for (int i = 1; i < dimensions.length; ++i)
-        {
-            length *= dimensions[i];
-        }
-        int intLength = (int) length;
-        if (length != intLength)
-        {
-            throw new IllegalArgumentException("Length is too large (" + length + ")");
-        }
-        return intLength;
-    }
-
-    /**
-     * Returns the one-dimensional length of the multi-dimensional array defined by
-     * <var>dimensions</var>.
-     * 
-     * @throws IllegalArgumentException If <var>dimensions</var> overflow the <code>int</code> type.
-     */
-    public static int getLength(final long[] dimensions)
-    {
-        return getLength(dimensions, 0);
-    }
-
-    /**
-     * Returns the one-dimensional length of the multi-dimensional array defined by
-     * <var>dimensions</var>. If <code>capacityHyperRows > dimensions[0]</code>, then it will
-     * replace <var>dimensions[0]</var> by <var>capacityHyperRows</var>
-     * 
-     * @throws IllegalArgumentException If <var>dimensions</var> overflow the <code>int</code> type.
-     */
-    public static int getLength(final long[] dimensions, long capacityHyperRows)
-    {
-        assert dimensions != null;
-
-        if (dimensions.length == 0) // NULL data space needs to be treated differently
-        {
-            return 0;
-        }
-        long length = Math.max(capacityHyperRows, dimensions[0]);
-        for (int i = 1; i < dimensions.length; ++i)
-        {
-            length *= dimensions[i];
-        }
-        int intLength = (int) length;
-        if (length != intLength)
-        {
-            throw new IllegalArgumentException("Length is too large (" + length + ")");
-        }
-        return intLength;
-    }
-
-    //
-    // Iterable
-    //
-
-    @Override
-    public Iterator<ArrayEntry> iterator()
-    {
-        return new Iterator<ArrayEntry>()
-            {
-                int linearIndex = 0;
-
-                @Override
-                public boolean hasNext()
-                {
-                    return linearIndex < size;
-                }
-
-                @Override
-                public ArrayEntry next()
-                {
-                    final ArrayEntry next = new ArrayEntry(linearIndex);
-                    ++linearIndex;
-                    return next;
-                }
-
-                @Override
-                public void remove()
-                {
-                    throw new UnsupportedOperationException();
-                }
-
-            };
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public String toString()
-    {
-        final int length = getLength(dimensions, 0);
-        final StringBuilder b = new StringBuilder();
-        b.append(ClassUtils.getShortCanonicalName(this.getClass()));
-        b.append('(');
-        b.append(ArrayUtils.toString(dimensions));
-        b.append(')');
-        if (length <= 100)
-        {
-            b.append(": ");
-            if (dimensions[0] < capacityHyperRows)
-            {
-                b.append(ArrayUtils.toString(getCopyAsFlatArray()));
-            } else
-            {
-                b.append(ArrayUtils.toString(getAsFlatArray()));
-            }
-        }
-        return b.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDArray.java
deleted file mode 100644
index 1a4a2360b773c467ce3737ec9b23504773a7f931..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDArray.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional array of generic type <code>T</code>.
- * 
- * @author Bernd Rinn
- */
-public class MDArray<T> extends MDAbstractArray<T>
-{
-    private static final long serialVersionUID = 1L;
-
-    private T[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDArray(Class<T> componentClass, long[] dimensions)
-    {
-        this(createArray(componentClass, getLength(dimensions, 0)), toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDArray(Class<T> componentClass, long[] dimensions, long capacityHyperRows)
-    {
-        this(createArray(componentClass, getLength(dimensions, capacityHyperRows)),
-                toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDArray} from the given {@code flattenedArray} and {@code dimensions}. It is
-     * checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDArray(T[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDArray} from the given <var>flattenedArray</var> and <var>dimensions</var>.
-     * If <var>checkDimensions</var> is {@code true}, it is checked that the arguments are
-     * compatible. Convenience method if <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDArray(T[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDArray} with the <var>dimensions</var>.
-     */
-    public MDArray(Class<T> componentClass, int[] dimensions)
-    {
-        this(createArray(componentClass, getLength(dimensions, 0)), dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDArray(Class<T> componentClass, int[] dimensions, int capacityHyperRows)
-    {
-        this(createArray(componentClass, getLength(dimensions, capacityHyperRows)), dimensions,
-                false);
-    }
-
-    /**
-     * Creates a {@link MDArray} from the given {@code flattenedArray} and {@code dimensions}. It is
-     * checked that the arguments are compatible.
-     */
-    public MDArray(T[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDArray} from the given <var>flattenedArray</var> and <var>dimensions</var>.
-     * If <var>checkDimensions</var> is {@code true}, it is checked that the arguments are
-     * compatible.
-     */
-    public MDArray(T[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    @SuppressWarnings("unchecked")
-    private static <V> V[] createArray(Class<V> componentClass, final int vectorLength)
-    {
-        final V[] value = (V[]) java.lang.reflect.Array.newInstance(componentClass, vectorLength);
-        return value;
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public T getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(T value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public T getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(T value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public T[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public T[] getCopyAsFlatArray()
-    {
-        return toTArray(ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength));
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final T[] oldArray = this.flattenedArray;
-        this.flattenedArray =
-                toTArray(createArray(oldArray.getClass().getComponentType(), capacityHyperRows
-                        * hyperRowLength));
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    @SuppressWarnings("unchecked")
-    private T[] toTArray(Object obj)
-    {
-        return (T[]) obj;
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public T get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public T get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public T get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public T get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(T value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(T value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(T value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(T value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Returns the component type of this array.
-     */
-    @SuppressWarnings("unchecked")
-    public Class<T> getComponentClass()
-    {
-        return (Class<T>) flattenedArray.getClass().getComponentType();
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        final MDArray<T> other = toMDArray(obj);
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private T[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    @SuppressWarnings("unchecked")
-    private MDArray<T> toMDArray(Object obj)
-    {
-        return (MDArray<T>) obj;
-    }
-
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDByteArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDByteArray.java
deleted file mode 100644
index 4bb36ad7d583731524ef96d4ec3f371d5f375188..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDByteArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>byte</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDByteArray extends MDAbstractArray<Byte>
-{
-    private static final long serialVersionUID = 1L;
-
-    private byte[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDByteArray(long[] dimensions)
-    {
-        this(new byte[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDByteArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDByteArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new byte[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDByteArray(byte[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDByteArray(byte[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDByteArray} with the <var>dimensions</var>.
-     */
-    public MDByteArray(int[] dimensions)
-    {
-        this(new byte[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDByteArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDByteArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new byte[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDByteArray(byte[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDByteArray(byte[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDByteArray(byte[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDByteArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDByteArray(byte[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new byte[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(byte[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Byte getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Byte value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Byte getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Byte value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public byte[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public byte[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final byte[] oldArray = this.flattenedArray;
-        this.flattenedArray = new byte[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public byte get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public byte get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public byte get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public byte get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(byte value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(byte value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(byte value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(byte value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public byte[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final byte[][] result = new byte[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDByteArray other = (MDByteArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private byte[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDDoubleArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDDoubleArray.java
deleted file mode 100644
index 8a755f442abaa55a037468cbb5def08477711e2f..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDDoubleArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>double</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDDoubleArray extends MDAbstractArray<Double>
-{
-    private static final long serialVersionUID = 1L;
-
-    private double[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDDoubleArray(long[] dimensions)
-    {
-        this(new double[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDDoubleArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDDoubleArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new double[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDDoubleArray(double[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDDoubleArray(double[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDDoubleArray} with the <var>dimensions</var>.
-     */
-    public MDDoubleArray(int[] dimensions)
-    {
-        this(new double[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDDoubleArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDDoubleArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new double[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDDoubleArray(double[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDDoubleArray(double[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDDoubleArray(double[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDDoubleArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDDoubleArray(double[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new double[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(double[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Double getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Double value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Double getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Double value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public double[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public double[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final double[] oldArray = this.flattenedArray;
-        this.flattenedArray = new double[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public double get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public double get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public double get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public double get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(double value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(double value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(double value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(double value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public double[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final double[][] result = new double[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDDoubleArray other = (MDDoubleArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private double[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDFloatArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDFloatArray.java
deleted file mode 100644
index 4b10fb8da65dfb5bf68f5a34265b293657eb5ec4..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDFloatArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>float</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDFloatArray extends MDAbstractArray<Float>
-{
-    private static final long serialVersionUID = 1L;
-
-    private float[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDFloatArray(long[] dimensions)
-    {
-        this(new float[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDFloatArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDFloatArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new float[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDFloatArray(float[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDFloatArray(float[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDFloatArray} with the <var>dimensions</var>.
-     */
-    public MDFloatArray(int[] dimensions)
-    {
-        this(new float[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDFloatArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDFloatArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new float[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDFloatArray(float[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDFloatArray(float[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDFloatArray(float[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDFloatArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDFloatArray(float[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new float[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(float[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Float getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Float value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Float getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Float value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public float[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public float[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final float[] oldArray = this.flattenedArray;
-        this.flattenedArray = new float[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public float get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public float get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public float get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public float get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(float value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(float value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(float value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(float value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public float[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final float[][] result = new float[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDFloatArray other = (MDFloatArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private float[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDIntArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDIntArray.java
deleted file mode 100644
index 76cbcd144e3814b0b754a1ba93dd46588b7e9e85..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDIntArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>int</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDIntArray extends MDAbstractArray<Integer>
-{
-    private static final long serialVersionUID = 1L;
-
-    private int[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDIntArray(long[] dimensions)
-    {
-        this(new int[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDIntArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new int[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDIntArray(int[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDIntArray(int[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>.
-     */
-    public MDIntArray(int[] dimensions)
-    {
-        this(new int[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDIntArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new int[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDIntArray(int[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDIntArray(int[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDIntArray(int[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDIntArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDIntArray(int[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new int[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(int[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Integer getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Integer value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Integer getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Integer value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public int[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public int[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final int[] oldArray = this.flattenedArray;
-        this.flattenedArray = new int[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public int get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public int get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public int get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public int get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(int value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(int value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(int value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(int value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public int[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final int[][] result = new int[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDIntArray other = (MDIntArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private int[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDLongArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDLongArray.java
deleted file mode 100644
index 3b927b131fe4bbc0a87f088b2b65bf344553c958..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDLongArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>long</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDLongArray extends MDAbstractArray<Long>
-{
-    private static final long serialVersionUID = 1L;
-
-    private long[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDLongArray(long[] dimensions)
-    {
-        this(new long[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDLongArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDLongArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new long[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDLongArray(long[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDLongArray(long[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDLongArray} with the <var>dimensions</var>.
-     */
-    public MDLongArray(int[] dimensions)
-    {
-        this(new long[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDLongArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDLongArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new long[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDLongArray(long[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDLongArray(long[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDLongArray(long[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDLongArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDLongArray(long[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new long[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(long[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Long getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Long value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Long getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Long value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public long[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public long[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final long[] oldArray = this.flattenedArray;
-        this.flattenedArray = new long[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public long get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public long get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public long get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public long get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(long value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(long value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(long value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(long value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public long[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final long[][] result = new long[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDLongArray other = (MDLongArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private long[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/MDShortArray.java b/base/source/java/ch/systemsx/cisd/base/mdarray/MDShortArray.java
deleted file mode 100644
index eefb0b8459ffaa62e9cf33b037c2fdb4b6dd4f41..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/MDShortArray.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-
-/**
- * A multi-dimensional <code>short</code> array.
- * 
- * @author Bernd Rinn
- */
-public final class MDShortArray extends MDAbstractArray<Short>
-{
-    private static final long serialVersionUID = 1L;
-
-    private short[] flattenedArray;
-
-    /**
-     * Creates an empty {@link MDIntArray} with the <var>dimensions</var>. Convenience method if
-     * <var>dimensions</var> are available as {@code long[]}.
-     */
-    public MDShortArray(long[] dimensions)
-    {
-        this(new short[getLength(dimensions, 0)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates an empty {@link MDShortArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDShortArray(long[] dimensions, long capacityHyperRows)
-    {
-        this(new short[getLength(dimensions, capacityHyperRows)], toInt(dimensions), false);
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible. Convenience method if <var>dimensions</var> are
-     * available as {@code long[]}.
-     */
-    public MDShortArray(short[] flattenedArray, long[] dimensions)
-    {
-        this(flattenedArray, toInt(dimensions), true);
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible. Convenience method if <var>dimensions</var> are available as
-     * {@code long[]}.
-     */
-    public MDShortArray(short[] flattenedArray, long[] dimensions, boolean checkdimensions)
-    {
-        this(flattenedArray, toInt(dimensions), checkdimensions);
-    }
-
-    /**
-     * Creates an empty {@link MDShortArray} with the <var>dimensions</var>.
-     */
-    public MDShortArray(int[] dimensions)
-    {
-        this(new short[getLength(dimensions, 0)], dimensions, false);
-    }
-
-    /**
-     * Creates an empty {@link MDShortArray} with the <var>dimensions</var>. If
-     * <code>capacityHyperRows > dimensions[0]</code>, then it will create an array with a capacity
-     * of <var>capacityHyperRows</var> hyper-rows.
-     */
-    public MDShortArray(int[] dimensions, int capacityHyperRows)
-    {
-        this(new short[getLength(dimensions, capacityHyperRows)], dimensions, false);
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given {@code flattenedArray} and {@code dimensions}. It
-     * is checked that the arguments are compatible.
-     */
-    public MDShortArray(short[] flattenedArray, int[] dimensions)
-    {
-        this(flattenedArray, dimensions, true);
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given <var>flattenedArray</var> and
-     * <var>dimensions</var>. If <var>checkDimensions</var> is {@code true}, it is checked that the
-     * arguments are compatible.
-     */
-    public MDShortArray(short[] flattenedArray, int[] dimensions, boolean checkdimensions)
-    {
-        super(dimensions, flattenedArray.length, 0);
-        assert flattenedArray != null;
-
-        if (checkdimensions)
-        {
-            final int expectedLength = getLength(dimensions, 0);
-            if (flattenedArray.length != expectedLength)
-            {
-                throw new IllegalArgumentException("Actual array length " + flattenedArray.length
-                        + " does not match expected length " + expectedLength + ".");
-            }
-        }
-        this.flattenedArray = flattenedArray;
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given <var>matrix</var> of rank 2. Note that the values
-     * in <var>matrix</var> will be copied and thus the created {@link MDIntArray} will be
-     * independent from <var>matrix</var> after construction.
-     */
-    public MDShortArray(short[][] matrix)
-    {
-        this(matrix, getDimensions(matrix));
-    }
-
-    /**
-     * Creates a {@link MDShortArray} from the given <var>matrix</var> of rank 2 and the
-     * <var>dimension</var> which need to be less or equal the dimensions of <var>matrix</var>. Note
-     * that the values in <var>matrix</var> will be copied and thus the created {@link MDIntArray}
-     * will be independent from <var>matrix</var> after construction.
-     */
-    public MDShortArray(short[][] matrix, int[] dimensions)
-    {
-        super(dimensions, 0, matrix.length);
-
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        int length = getLength(dimensions, 0);
-        this.flattenedArray = new short[length];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(matrix[i], 0, flattenedArray, i * sizeY, sizeY);
-        }
-    }
-
-    private static int[] getDimensions(short[][] matrix)
-    {
-        assert matrix != null;
-
-        return new int[]
-            { matrix.length, matrix.length == 0 ? 0 : matrix[0].length };
-    }
-
-    @Override
-    public int capacity()
-    {
-        return flattenedArray.length;
-    }
-
-    @Override
-    public Short getAsObject(int... indices)
-    {
-        return get(indices);
-    }
-
-    @Override
-    public void setToObject(Short value, int... indices)
-    {
-        set(value, indices);
-    }
-
-    @Override
-    public Short getAsObject(int linearIndex)
-    {
-        return get(linearIndex);
-    }
-
-    @Override
-    public void setToObject(Short value, int linearIndex)
-    {
-        set(value, linearIndex);
-    }
-
-    @Override
-    public short[] getAsFlatArray()
-    {
-        return flattenedArray;
-    }
-
-    @Override
-    public short[] getCopyAsFlatArray()
-    {
-        return ArrayUtils.subarray(flattenedArray, 0, dimensions[0] * hyperRowLength);
-    }
-
-    @Override
-    protected void adaptCapacityHyperRows()
-    {
-        final short[] oldArray = this.flattenedArray;
-        this.flattenedArray = new short[capacityHyperRows * hyperRowLength];
-        System.arraycopy(oldArray, 0, flattenedArray, 0,
-                Math.min(oldArray.length, flattenedArray.length));
-    }
-
-    /**
-     * Returns the value of array at the position defined by <var>indices</var>.
-     */
-    public short get(int... indices)
-    {
-        return flattenedArray[computeIndex(indices)];
-    }
-
-    /**
-     * Returns the value of a one-dimensional array at the position defined by <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public short get(int index)
-    {
-        return flattenedArray[index];
-    }
-
-    /**
-     * Returns the value of a two-dimensional array at the position defined by <var>indexX</var> and
-     * <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public short get(int indexX, int indexY)
-    {
-        return flattenedArray[computeIndex(indexX, indexY)];
-    }
-
-    /**
-     * Returns the value of a three-dimensional array at the position defined by <var>indexX</var>,
-     * <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public short get(int indexX, int indexY, int indexZ)
-    {
-        return flattenedArray[computeIndex(indexX, indexY, indexZ)];
-    }
-
-    /**
-     * Sets the <var>value</var> of array at the position defined by <var>indices</var>.
-     */
-    public void set(short value, int... indices)
-    {
-        flattenedArray[computeIndex(indices)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a one-dimension array at the position defined by
-     * <var>index</var>.
-     * <p>
-     * <b>Do not call for arrays other than one-dimensional!</b>
-     */
-    public void set(short value, int index)
-    {
-        flattenedArray[index] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a two-dimensional array at the position defined by
-     * <var>indexX</var> and <var>indexY</var>.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public void set(short value, int indexX, int indexY)
-    {
-        flattenedArray[computeIndex(indexX, indexY)] = value;
-    }
-
-    /**
-     * Sets the <var>value</var> of a three-dimensional array at the position defined by
-     * <var>indexX</var>, <var>indexY</var> and <var>indexZ</var>.
-     * <p>
-     * <b>Do not call for arrays other than three-dimensional!</b>
-     */
-    public void set(short value, int indexX, int indexY, int indexZ)
-    {
-        flattenedArray[computeIndex(indexX, indexY, indexZ)] = value;
-    }
-
-    /**
-     * Creates and returns a matrix from a two-dimensional array.
-     * <p>
-     * <b>Do not call for arrays other than two-dimensional!</b>
-     */
-    public short[][] toMatrix()
-    {
-        final int sizeX = dimensions[0];
-        final int sizeY = dimensions[1];
-        final short[][] result = new short[sizeX][sizeY];
-        for (int i = 0; i < sizeX; ++i)
-        {
-            System.arraycopy(flattenedArray, i * sizeY, result[i], 0, sizeY);
-        }
-        return result;
-    }
-
-    //
-    // Object
-    //
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(getValuesAsFlatArray());
-        result = prime * result + Arrays.hashCode(dimensions);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-        if (obj == null)
-        {
-            return false;
-        }
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-        MDShortArray other = (MDShortArray) obj;
-        if (Arrays.equals(getValuesAsFlatArray(), other.getValuesAsFlatArray()) == false)
-        {
-            return false;
-        }
-        if (Arrays.equals(dimensions, other.dimensions) == false)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private short[] getValuesAsFlatArray()
-    {
-        return (dimensions[0] < capacityHyperRows) ? getCopyAsFlatArray() : getAsFlatArray(); 
-    }
-    
-    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
-    {
-        stream.defaultReadObject();
-        if (hyperRowLength == 0)
-        {
-            this.hyperRowLength = computeHyperRowLength(dimensions);
-        }
-        if (capacityHyperRows == 0)
-        {
-            this.capacityHyperRows = dimensions[0];
-        }
-        if (size == 0)
-        {
-            this.size = hyperRowLength * dimensions[0];
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/mdarray/package.html b/base/source/java/ch/systemsx/cisd/base/mdarray/package.html
deleted file mode 100644
index 1788c177d1300b1b2695fead39a39303d6121e3e..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/mdarray/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-     "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Multi-dimensional arrays.</title>
-</head>
-<body>
-<p>
-This package provides an implementation of multi-dimensional numerical arrays in Java. Contrary to 
-the <i>array of arrays</i> representation that is built into the Java language, the classes in this 
-package use one contiguous array and appropriate index operations to access the elements of the 
-array.    
-</p>
-<p>
-The number of indices (or axis') of an array is called the <i>rank</i> of the array, the set of 
-extends of the array along each of its axis' are called the <i>dimensions</i> of the array.
-</p>
-</body>
-</html> 
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/ICallableNameProvider.java b/base/source/java/ch/systemsx/cisd/base/namedthread/ICallableNameProvider.java
deleted file mode 100644
index 061e213279c41667053baa3f34acaa665226a80f..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/ICallableNameProvider.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-/**
- * A name provider for a {@link java.util.concurrent.Callable}.
- *
- * @author Bernd Rinn
- */
-public interface ICallableNameProvider
-{
-    /** Returns the name to be used for the thread name. */
-    public String getCallableName();
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/IRunnableNameProvider.java b/base/source/java/ch/systemsx/cisd/base/namedthread/IRunnableNameProvider.java
deleted file mode 100644
index adf021b750900aded2042ac5c19c602ce98ef000..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/IRunnableNameProvider.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-/**
- * A name provider for a {@link Runnable}.
- *
- * @author Bernd Rinn
- */
-public interface IRunnableNameProvider
-{
-    /** Returns the name to be used for the thread name. */
-    public String getRunnableName();
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java
deleted file mode 100644
index 7bf30228763f1d8b7b7f7904385fb796c39c5500..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedCallable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-import java.util.concurrent.Callable;
-
-/**
- * A {@link Callable} with a name.
- *
- * @author Bernd Rinn
- */
-public interface NamedCallable<T> extends Callable<T>, ICallableNameProvider
-{
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java
deleted file mode 100644
index 7114e2a97ebd6dc4da197d25789c5a4d091c4689..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedFutureTask.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.FutureTask;
-
-/**
- * A {@link FutureTask} with a name.
- * 
- * @author Bernd Rinn
- */
-class NamedFutureTask<V> extends FutureTask<V> implements NamedRunnable
-{
-    private final String name;
-    
-    private Thread thread;
-    
-    private String oldThreadName;
-
-    NamedFutureTask(Callable<V> callable)
-    {
-        super(callable);
-        this.name =
-                (callable instanceof ICallableNameProvider) ? ((ICallableNameProvider) callable)
-                        .getCallableName() : null;
-    }
-
-    NamedFutureTask(Runnable runnable, V result)
-    {
-        super(runnable, result);
-        this.name =
-                (runnable instanceof IRunnableNameProvider) ? ((IRunnableNameProvider) runnable)
-                        .getRunnableName() : null;
-    }
-
-    void restoreThreadName()
-    {
-        if (this.thread != null)
-        {
-            this.thread.setName(oldThreadName);
-            this.thread = null;
-        }
-    }
-
-    void setThread(Thread thread)
-    {
-        this.thread = thread;
-        this.oldThreadName = thread.getName();
-    }
-
-    @Override
-    public String getRunnableName()
-    {
-        return name;
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java
deleted file mode 100644
index e4ceec0edcee261880a72a510b482d2af54bf5de..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/NamedRunnable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-/**
- * A {@link Runnable} with a name.
- *
- * @author Bernd Rinn
- */
-public interface NamedRunnable extends Runnable, IRunnableNameProvider
-{
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java
deleted file mode 100644
index f74e529556a1f9280b79be8ff101e1a527477d3b..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-import java.util.concurrent.ThreadFactory;
-
-/**
- * A {@link ThreadFactory} that gives (non-standard) names to new threads. If a name is a
- * {@link IRunnableNameProvider}, the name provided by
- * {@link IRunnableNameProvider#getRunnableName()} will be used, otherwise the
- * <var>defaultName</var>. The thread count (number of already created threads in this factory) will
- * always be appended.
- * 
- * @author Bernd Rinn
- */
-public class NamingThreadFactory implements ThreadFactory
-{
-
-    private final String poolName;
-
-    private boolean createDaemonThreads;
-
-    private boolean addPoolName;
-
-    private int threadCount;
-
-    public NamingThreadFactory(String poolName)
-    {
-        this.poolName = poolName;
-        this.addPoolName = true;
-        this.createDaemonThreads = false;
-        this.threadCount = 0;
-    }
-
-    @Override
-    public Thread newThread(Runnable r)
-    {
-        ++threadCount;
-        final String completePoolName = poolName + "-T" + threadCount;
-        final Thread thread = new PoolNameThread(r, completePoolName, addPoolName);
-        thread.setDaemon(createDaemonThreads);
-        return thread;
-    }
-
-    String getPoolName()
-    {
-        return poolName;
-    }
-
-    public final boolean isCreateDaemonThreads()
-    {
-        return createDaemonThreads;
-    }
-
-    public final void setCreateDaemonThreads(boolean createDaemonThreads)
-    {
-        this.createDaemonThreads = createDaemonThreads;
-    }
-
-    public final int getThreadCount()
-    {
-        return threadCount;
-    }
-
-    public final boolean isAddPoolName()
-    {
-        return addPoolName;
-    }
-
-    public final void setAddPoolName(boolean addPoolName)
-    {
-        this.addPoolName = addPoolName;
-    }
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java b/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java
deleted file mode 100644
index 1cd26edbe32617acfc0a0e0c3946df23a36e7afa..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutor.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Callable;
-import java.util.concurrent.Future;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A {@link ThreadPoolExecutor} that allows to attach names to the threads it manages. These names
- * can come either from {@link IRunnableNameProvider}s or {@link ICallableNameProvider}s, or, if
- * their standard counterparts are submitted, a default name is used.
- * 
- * @author Bernd Rinn
- */
-public class NamingThreadPoolExecutor extends ThreadPoolExecutor
-{
-
-    /**
-     * The default time (in milli-seconds) to keep threads alive that are above the core pool size.
-     */
-    public final static long DEFAULT_KEEP_ALIVE_TIME_MILLIS = 10000L;
-
-    /**
-     * Creates a new (caching) <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * This executor will create new threads as needed.
-     * 
-     * @param poolName the default name for new threads
-     */
-    public NamingThreadPoolExecutor(String poolName)
-    {
-        this(poolName, 0);
-    }
-
-    /**
-     * Creates a new (caching) <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * This executor will create new threads as needed.
-     * 
-     * @param poolName The default name for new threads.
-     * @param workQueueSize The size of the work queue (0 for no queue).
-     * 
-     */
-    public NamingThreadPoolExecutor(String poolName, int workQueueSize)
-    {
-        super(1, Integer.MAX_VALUE, DEFAULT_KEEP_ALIVE_TIME_MILLIS, TimeUnit.MILLISECONDS,
-                workQueueSize == 0 ? new SynchronousQueue<Runnable>()
-                        : new LinkedBlockingQueue<Runnable>(workQueueSize),
-                new NamingThreadFactory(poolName));
-    }
-
-    /**
-     * Creates a new <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * 
-     * @param poolName the default name for new threads
-     * @param corePoolSize the number of threads to keep in the pool, even if they are idle.
-     * @param maximumPoolSize the maximum number of threads to allow in the pool.
-     * @param keepAliveTime when the number of threads is greater than the core, this is the maximum
-     *            time that excess idle threads will wait for new tasks before terminating.
-     * @param unit the time unit for the keepAliveTime argument.
-     * @param workQueue the queue to use for holding tasks before they are executed. This queue will
-     *            hold only the <tt>Runnable</tt> tasks submitted by the <tt>execute</tt> method.
-     * @param handler the handler to use when execution is blocked because the thread bounds and
-     *            queue capacities are reached.
-     * @throws IllegalArgumentException if corePoolSize, or keepAliveTime less than zero, or if
-     *             maximumPoolSize less than or equal to zero, or if corePoolSize greater than
-     *             maximumPoolSize.
-     * @throws NullPointerException if <tt>workQueue</tt> or <tt>threadFactory</tt> or
-     *             <tt>handler</tt> are null.
-     */
-    public NamingThreadPoolExecutor(String poolName, int corePoolSize, int maximumPoolSize,
-            long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
-            RejectedExecutionHandler handler)
-    {
-        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
-                new NamingThreadFactory(poolName), handler);
-    }
-
-    /**
-     * Creates a new <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * 
-     * @param poolName the default name for new threads
-     * @param corePoolSize the number of threads to keep in the pool, even if they are idle.
-     * @param maximumPoolSize the maximum number of threads to allow in the pool.
-     * @param keepAliveTime when the number of threads is greater than the core, this is the maximum
-     *            time that excess idle threads will wait for new tasks before terminating.
-     * @param unit the time unit for the keepAliveTime argument.
-     * @param workQueue the queue to use for holding tasks before they are executed. This queue will
-     *            hold only the <tt>Runnable</tt> tasks submitted by the <tt>execute</tt> method.
-     * @throws IllegalArgumentException if corePoolSize, or keepAliveTime less than zero, or if
-     *             maximumPoolSize less than or equal to zero, or if corePoolSize greater than
-     *             maximumPoolSize.
-     * @throws NullPointerException if <tt>workQueue</tt> or <tt>threadFactory</tt> are null.
-     */
-    public NamingThreadPoolExecutor(String poolName, int corePoolSize, int maximumPoolSize,
-            long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)
-    {
-        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
-                new NamingThreadFactory(poolName));
-    }
-
-    /**
-     * Creates a new <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * 
-     * @param corePoolSize the number of threads to keep in the pool, even if they are idle.
-     * @param maximumPoolSize the maximum number of threads to allow in the pool.
-     * @param keepAliveTime when the number of threads is greater than the core, this is the maximum
-     *            time that excess idle threads will wait for new tasks before terminating.
-     * @param unit the time unit for the keepAliveTime argument.
-     * @param workQueue the queue to use for holding tasks before they are executed. This queue will
-     *            hold only the <tt>Runnable</tt> tasks submitted by the <tt>execute</tt> method.
-     * @param threadFactory the factory to use when the executor creates a new thread.
-     * @param handler the handler to use when execution is blocked because the thread bounds and
-     *            queue capacities are reached.
-     * @throws IllegalArgumentException if corePoolSize, or keepAliveTime less than zero, or if
-     *             maximumPoolSize less than or equal to zero, or if corePoolSize greater than
-     *             maximumPoolSize.
-     * @throws NullPointerException if <tt>workQueue</tt> or <tt>threadFactory</tt> or
-     *             <tt>handler</tt> are null.
-     */
-    public NamingThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,
-            TimeUnit unit, BlockingQueue<Runnable> workQueue, NamingThreadFactory threadFactory,
-            RejectedExecutionHandler handler)
-    {
-        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler);
-    }
-
-    /**
-     * Creates a new <tt>NamingThreadPoolExecutor</tt> with the given initial parameters.
-     * 
-     * @param corePoolSize the number of threads to keep in the pool, even if they are idle.
-     * @param maximumPoolSize the maximum number of threads to allow in the pool.
-     * @param keepAliveTime when the number of threads is greater than the core, this is the maximum
-     *            time that excess idle threads will wait for new tasks before terminating.
-     * @param unit the time unit for the keepAliveTime argument.
-     * @param workQueue the queue to use for holding tasks before they are executed. This queue will
-     *            hold only the <tt>Runnable</tt> tasks submitted by the <tt>execute</tt> method.
-     * @param threadFactory the factory to use when the executor creates a new thread.
-     * @throws IllegalArgumentException if corePoolSize, or keepAliveTime less than zero, or if
-     *             maximumPoolSize less than or equal to zero, or if corePoolSize greater than
-     *             maximumPoolSize.
-     * @throws NullPointerException if <tt>workQueue</tt> or <tt>threadFactory</tt> are null.
-     */
-    public NamingThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,
-            TimeUnit unit, BlockingQueue<Runnable> workQueue, NamingThreadFactory threadFactory)
-    {
-        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory);
-    }
-
-    /**
-     * Sets the thread factory of this pool executor to daemon creation mode.
-     * <p>
-     * This method is supposed to be used in chaining mode, i.e.
-     * 
-     * <pre>
-     * final ExecutorService executor = new NamingThreadPoolExecutor(&quot;name&quot;).daemonize();
-     * </pre>
-     * 
-     * @return This class itself.
-     */
-    public NamingThreadPoolExecutor daemonize()
-    {
-        getThreadFactory().setCreateDaemonThreads(true);
-        return this;
-    }
-
-    /**
-     * Same as {@link #setCorePoolSize(int)}, but returns the object itself for chaining.
-     */
-    public NamingThreadPoolExecutor corePoolSize(int corePoolSize)
-    {
-        setCorePoolSize(corePoolSize);
-        return this;
-    }
-
-    /**
-     * Same as {@link #setMaximumPoolSize(int)}, but returns the object itself for chaining.
-     */
-    public NamingThreadPoolExecutor maximumPoolSize(int maximumPoolSize)
-    {
-        setMaximumPoolSize(maximumPoolSize);
-        return this;
-    }
-
-    /**
-     * Same as {@link #setKeepAliveTime(long, TimeUnit)}, but uses always
-     * {@link TimeUnit#MILLISECONDS} and returns the object itself for chaining.
-     */
-    public NamingThreadPoolExecutor keepAliveTime(long keepAliveTimeMillis)
-    {
-        setKeepAliveTime(keepAliveTimeMillis, TimeUnit.MILLISECONDS);
-        return this;
-    }
-
-    /**
-     * If <var>addPoolName</var> is <code>true</code>, the threads will contain the pool name as the
-     * first part of the thread names.
-     */
-    public NamingThreadPoolExecutor addPoolName(boolean addPoolName)
-    {
-        getThreadFactory().setAddPoolName(addPoolName);
-        return this;
-    }
-
-    @Override
-    public NamingThreadFactory getThreadFactory()
-    {
-        return (NamingThreadFactory) super.getThreadFactory();
-    }
-
-    /**
-     * Sets the thread factory of this pool executor.
-     */
-    public void setThreadFactory(NamingThreadFactory threadFactory)
-    {
-        super.setThreadFactory(threadFactory);
-    }
-
-    /**
-     * @deprecated Use {@link #setThreadFactory(NamingThreadFactory)} instead!
-     */
-    @Override
-    @Deprecated
-    public void setThreadFactory(ThreadFactory threadFactory)
-    {
-        if (threadFactory instanceof NamingThreadFactory == false)
-        {
-            throw new IllegalArgumentException("thread factory is of type '"
-                    + threadFactory.getClass().getCanonicalName() + ", but needs to be of type "
-                    + NamingThreadFactory.class.getCanonicalName());
-        }
-        super.setThreadFactory(threadFactory);
-    }
-
-    @Override
-    protected void beforeExecute(Thread t, Runnable r)
-    {
-        if (r instanceof IRunnableNameProvider == false)
-        {
-            return;
-        }
-        final String runnableName = ((IRunnableNameProvider) r).getRunnableName();
-        if (runnableName == null)
-        {
-            return;
-        }
-        if (r instanceof NamedFutureTask<?>)
-        {
-            ((NamedFutureTask<?>) r).setThread(t);
-        }
-        if (t instanceof PoolNameThread)
-        {
-            ((PoolNameThread) t).setRunnableName(runnableName);
-        } else
-        {
-            t.setName(runnableName);
-        }
-        super.beforeExecute(t, r);
-    }
-
-    @Override
-    protected void afterExecute(Runnable r, Throwable t)
-    {
-        if (r instanceof NamedFutureTask<?>)
-        {
-            ((NamedFutureTask<?>) r).restoreThreadName();
-        }
-        super.afterExecute(r, t);
-    }
-
-    @Override
-    public Future<?> submit(Runnable task)
-    {
-        if (task == null)
-        {
-            throw new NullPointerException();
-        }
-
-        final FutureTask<Object> ftask = new NamedFutureTask<Object>(task, null);
-        execute(ftask);
-        return ftask;
-    }
-
-    @Override
-    public <T> Future<T> submit(Runnable task, T result)
-    {
-        if (task == null)
-        {
-            throw new NullPointerException();
-        }
-
-        final FutureTask<T> ftask = new NamedFutureTask<T>(task, result);
-        execute(ftask);
-        return ftask;
-    }
-
-    @Override
-    public <T> Future<T> submit(Callable<T> task)
-    {
-        if (task == null)
-        {
-            throw new NullPointerException();
-        }
-        final FutureTask<T> ftask = new NamedFutureTask<T>(task);
-        execute(ftask);
-        return ftask;
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java b/base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java
deleted file mode 100644
index 550efeaf7f8bc5e70148357ce449a3fd2150c080..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/PoolNameThread.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-/**
- * A {@link Thread} that knows its pool name.
- * 
- * @author Bernd Rinn
- */
-public class PoolNameThread extends Thread
-{
-    private final String poolName;
-
-    private final boolean addPoolName;
-
-    public PoolNameThread(Runnable target, String poolName, boolean addPoolName)
-    {
-        super(target, poolName);
-        this.poolName = poolName;
-        this.addPoolName = addPoolName;
-    }
-
-    /**
-     * Sets the thread's name to the <var>runnableName</var>, possibly adding the pool name if
-     * <var>addPoolName</var> has been set to <code>true</code> in the constructor.
-     */
-    public void setRunnableName(String runnableName)
-    {
-        if (addPoolName)
-        {
-            setName(poolName + "::" + runnableName);
-        } else
-        {
-            setName(runnableName);
-        }
-    }
-
-    /** Clears the name of the runnable, setting the name of the thread to the pool name. */
-    public void clearRunnableName()
-    {
-        setName(poolName);
-    }
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/namedthread/package.html b/base/source/java/ch/systemsx/cisd/base/namedthread/package.html
deleted file mode 100644
index d2a54d4999df6e1869c579c98f5cec676fb0555f..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/namedthread/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-     "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Named pool threads.</title>
-</head>
-<body>
-<p>
-This package provides <i>named pool threads</i> when using an 
-{@code java.util.concurrent.ExecutorService}. This can be helpful in debugging and monitoring 
-multi-threaded Java applications. Start having a look at the {@code NamedThreadPoolExecutor}.
-</p>
-</body>
-</html> 
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/tests/AbstractFileSystemTestCase.java b/base/source/java/ch/systemsx/cisd/base/tests/AbstractFileSystemTestCase.java
deleted file mode 100644
index b91323b16740744efc7ea6b8d29af2fdb4954ec7..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/tests/AbstractFileSystemTestCase.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.tests;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Arrays;
-
-import org.apache.commons.io.FileUtils;
-import org.testng.AssertJUnit;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeMethod;
-
-/**
- * An <code>abstract</code> test case which accesses the file system.
- * <p>
- * It constructs an appropriate working directory which is test class specific.
- * </p>
- * 
- * @author Christian Ribeaud
- */
-public abstract class AbstractFileSystemTestCase extends AssertJUnit
-{
-    protected static final String UNIT_TEST_WORKING_DIRECTORY = "unit-test-wd";
-
-    protected static final String TARGETS_DIRECTORY = "targets";
-
-    protected static final File UNIT_TEST_ROOT_DIRECTORY = new File(TARGETS_DIRECTORY
-            + File.separator + UNIT_TEST_WORKING_DIRECTORY);
-
-    protected final File workingDirectory;
-
-    private final boolean cleanAfterMethod;
-
-    protected AbstractFileSystemTestCase()
-    {
-        this(true);
-    }
-
-    protected AbstractFileSystemTestCase(final boolean cleanAfterMethod)
-    {
-        workingDirectory = createWorkingDirectory();
-        this.cleanAfterMethod = cleanAfterMethod;
-    }
-
-    /**
-     * Creates a {@link File} with <var>name</var> in the working directory. Ensure it doesn't
-     * exist and is deleted on exit.
-     */
-    protected File create(String name)
-    {
-        final File file = new File(workingDirectory, name);
-        file.delete();
-        file.deleteOnExit();
-        return file;
-    }
-
-    /**
-     * Creates a directory in the unit test root directory "targets/unit-test-wd"
-     */
-    protected final File createDirectoryInUnitTestRoot(String dirName)
-    {
-        final File directory = new File(UNIT_TEST_ROOT_DIRECTORY, dirName);
-        directory.mkdirs();
-        directory.deleteOnExit();
-        return directory;
-    }
-
-    private final File createWorkingDirectory()
-    {
-        return createDirectoryInUnitTestRoot(getClass().getName());
-    }
-
-    @BeforeMethod
-    public void setUp() throws IOException
-    {
-        cleanUpDirectoryBeforeTheTest(workingDirectory);
-    }
-
-    /**
-     * Deletes, recreates and verifies that this is the empty directory
-     */
-    protected void cleanUpDirectoryBeforeTheTest(File directory)
-    {
-        deleteDirectory(directory);
-        directory.mkdirs();
-        assertEquals(true, directory.isDirectory());
-        File[] files = directory.listFiles();
-        if (files != null)
-        {
-            assertEquals("Unexpected files " + Arrays.asList(files), 0, files.length);
-        }
-    }
-
-    private void deleteDirectory(File dir)
-    {
-        try
-        {
-            FileUtils.deleteDirectory(dir);
-        } catch (IOException e)
-        {
-            System.err.println("Could not delete the directory " + dir.getPath() + " because: "
-                    + e.getMessage());
-            try
-            {
-                FileUtils.deleteDirectory(dir);
-            } catch (IOException e2)
-            {
-                System.err.println("Could not delete the directory " + dir.getPath()
-                        + " in second try because: " + e2.getMessage());
-            }
-        }
-    }
-
-    @AfterClass
-    public void afterClass() throws IOException
-    {
-        if (cleanAfterMethod == false)
-        {
-            return;
-        }
-        try
-        {
-            FileUtils.deleteDirectory(workingDirectory);
-        } catch (FileNotFoundException ex)
-        {
-            // Ignore
-        }
-    }
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/tests/Retry10.java b/base/source/java/ch/systemsx/cisd/base/tests/Retry10.java
deleted file mode 100644
index e3438e7750f9700346da0dc8bad3155a7e384d25..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/tests/Retry10.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.tests;
-
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestResult;
-import org.testng.util.RetryAnalyzerCount;
-
-/**
- * An {@link RetryAnalyzerCount} extension which sets the count to <code>10</code>.
- * <p>
- * This {@link IRetryAnalyzer} should only be applied to methods we know they should run
- * successfully but do not for some reason. The retry analyzer exits as soon as it made a successful
- * call.
- * </p>
- * 
- * @author Christian Ribeaud
- */
-public final class Retry10 extends RetryAnalyzerCount
-{
-    public Retry10()
-    {
-        setCount(10);
-    }
-
-    //
-    // RetryAnalyzerCount
-    //
-
-    @Override
-    public final boolean retryMethod(final ITestResult result)
-    {
-        return true;
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/tests/Retry50.java b/base/source/java/ch/systemsx/cisd/base/tests/Retry50.java
deleted file mode 100644
index 60df88ef8563a4715989fc79deb517b3dd0a7c78..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/tests/Retry50.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.tests;
-
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestResult;
-import org.testng.util.RetryAnalyzerCount;
-
-/**
- * An {@link RetryAnalyzerCount} extension which sets the count to <code>50</code>.
- * <p>
- * This {@link IRetryAnalyzer} should only be applied to methods we know they should run
- * successfully but do not for some reason. The retry analyzer exits as soon as it made a successful
- * call.
- * </p>
- * 
- * @author Bernd Rinn
- */
-public final class Retry50 extends RetryAnalyzerCount
-{
-    public Retry50()
-    {
-        setCount(50);
-    }
-
-    //
-    // RetryAnalyzerCount
-    //
-
-    @Override
-    public final boolean retryMethod(final ITestResult result)
-    {
-        return true;
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/unix/FileLinkType.java b/base/source/java/ch/systemsx/cisd/base/unix/FileLinkType.java
deleted file mode 100644
index 5a0f72eacd8256eab8f0750b1f39b1546eb33e19..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/unix/FileLinkType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.unix;
-
-import java.io.Serializable;
-
-/**
- * The type of a link in the file system.
- * 
- * @author Bernd Rinn
- */
-public enum FileLinkType implements Serializable
-{
-    REGULAR_FILE, DIRECTORY, SYMLINK, OTHER;
-
-    /**
-     * Returns <code>true</code> if the <var>linkMode</var> corresponds to a symbolic link.
-     */
-    static boolean isSymLink(long linkMode)
-    {
-        return linkMode == SYMLINK.ordinal();
-    }
-}
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/unix/Unix.java b/base/source/java/ch/systemsx/cisd/base/unix/Unix.java
deleted file mode 100644
index fc02834a5edcd28fa11d4e99e68b727aa378b317..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/unix/Unix.java
+++ /dev/null
@@ -1,901 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.unix;
-
-import java.io.File;
-import java.io.IOException;
-
-import ch.rinn.restrictions.Private;
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-import ch.systemsx.cisd.base.utilities.NativeLibraryUtilities;
-
-/**
- * A utility class that provides access to common Unix system calls. Obviously, this will only work
- * on Unix platforms and it requires a native library to be loaded.
- * <p>
- * <i>Check with {@link #isOperational()} if this class is operational and only call the other
- * methods if <code>Unix.isOperational() == true</code>.</i>
- * 
- * @author Bernd Rinn
- */
-public final class Unix
-{
-
-    private enum ProcessDetection
-    {
-        PROCFS, PS, NONE
-    }
-
-    private final static boolean operational;
-
-    private final static ProcessDetection processDetection;
-
-    static
-    {
-        operational = NativeLibraryUtilities.loadNativeLibrary("unix");
-        if (operational)
-        {
-            init();
-            final int myPid = getPid();
-            if (isProcessRunningProcFS(myPid))
-            {
-                processDetection = ProcessDetection.PROCFS;
-            } else if (isProcessRunningPS(myPid))
-            {
-                processDetection = ProcessDetection.PS;
-            } else
-            {
-                processDetection = ProcessDetection.NONE;
-            }
-        } else
-        {
-            processDetection = ProcessDetection.NONE;
-        }
-    }
-
-    /** set user ID on execution */
-    public static final short S_ISUID = 04000;
-
-    /** set group ID on execution */
-    public static final short S_ISGID = 02000;
-
-    /** sticky bit */
-    public static final short S_ISVTX = 01000;
-
-    /** read by owner */
-    public static final short S_IRUSR = 00400;
-
-    /** write by owner */
-    public static final short S_IWUSR = 00200;
-
-    /** execute/search by owner */
-    public static final short S_IXUSR = 00100;
-
-    /** read by group */
-    public static final short S_IRGRP = 00040;
-
-    /** write by group */
-    public static final short S_IWGRP = 00020;
-
-    /** execute/search by group */
-    public static final short S_IXGRP = 00010;
-
-    /** read by others */
-    public static final short S_IROTH = 00004;
-
-    /** write by others */
-    public static final short S_IWOTH = 00002;
-
-    /** execute/search by others */
-    public static final short S_IXOTH = 00001;
-
-    /**
-     * A class representing the Unix <code>stat</code> structure.
-     */
-    public static final class Stat
-    {
-        private final long deviceId;
-
-        private final long inode;
-
-        private final short permissions;
-
-        private final FileLinkType linkType;
-
-        private String symbolicLinkOrNull;
-
-        private final int numberOfHardLinks;
-
-        private final int uid;
-
-        private final int gid;
-
-        private final long lastAccess;
-
-        private final long lastModified;
-
-        private final long lastStatusChange;
-
-        private final long size;
-
-        private final long numberOfBlocks;
-
-        private final int blockSize;
-
-        Stat(long deviceId, long inode, short permissions, byte linkType, int numberOfHardLinks,
-                int uid, int gid, long lastAccess, long lastModified, long lastStatusChange,
-                long size, long numberOfBlocks, int blockSize)
-        {
-            this.deviceId = deviceId;
-            this.inode = inode;
-            this.permissions = permissions;
-            this.linkType = FileLinkType.values()[linkType];
-            this.numberOfHardLinks = numberOfHardLinks;
-            this.uid = uid;
-            this.gid = gid;
-            this.lastAccess = lastAccess;
-            this.lastModified = lastModified;
-            this.lastStatusChange = lastStatusChange;
-            this.size = size;
-            this.numberOfBlocks = numberOfBlocks;
-            this.blockSize = blockSize;
-        }
-
-        void setSymbolicLinkOrNull(String symbolicLinkOrNull)
-        {
-            this.symbolicLinkOrNull = symbolicLinkOrNull;
-        }
-
-        public String tryGetSymbolicLink()
-        {
-            return symbolicLinkOrNull;
-        }
-
-        public long getDeviceId()
-        {
-            return deviceId;
-        }
-
-        public long getInode()
-        {
-            return inode;
-        }
-
-        public short getPermissions()
-        {
-            return permissions;
-        }
-
-        public FileLinkType getLinkType()
-        {
-            return linkType;
-        }
-
-        /**
-         * Returns <code>true</code>, if this link is a symbolic link.
-         */
-        public final boolean isSymbolicLink()
-        {
-            return FileLinkType.SYMLINK == linkType;
-        }
-
-        public int getNumberOfHardLinks()
-        {
-            return numberOfHardLinks;
-        }
-
-        public int getUid()
-        {
-            return uid;
-        }
-
-        public int getGid()
-        {
-            return gid;
-        }
-
-        public long getLastAccess()
-        {
-            return lastAccess;
-        }
-
-        public long getLastModified()
-        {
-            return lastModified;
-        }
-
-        public long getLastStatusChange()
-        {
-            return lastStatusChange;
-        }
-
-        public long getSize()
-        {
-            return size;
-        }
-
-        public long getNumberOfBlocks()
-        {
-            return numberOfBlocks;
-        }
-
-        public int getBlockSize()
-        {
-            return blockSize;
-        }
-
-    }
-
-    /**
-     * A class representing the Unix <code>group</code> struct.
-     */
-    public static final class Group
-    {
-        private final String groupName;
-
-        private final String groupPasswordHash;
-
-        private final int gid;
-
-        private final String[] groupMembers;
-
-        Group(String groupName, String groupPasswordHash, int gid, String[] groupMembers)
-        {
-            this.groupName = groupName;
-            this.groupPasswordHash = groupPasswordHash;
-            this.gid = gid;
-            this.groupMembers = groupMembers;
-        }
-
-        public String getGroupName()
-        {
-            return groupName;
-        }
-
-        public String getGroupPasswordHash()
-        {
-            return groupPasswordHash;
-        }
-
-        public int getGid()
-        {
-            return gid;
-        }
-
-        public String[] getGroupMembers()
-        {
-            return groupMembers;
-        }
-    }
-
-    /**
-     * A class representing the Unix <code>passwd</code> struct.
-     */
-    public static final class Password
-    {
-        private final String userName;
-
-        private final String passwordHash;
-
-        private final int uid;
-
-        private final int gid;
-
-        private final String userFullName;
-
-        private final String homeDirectory;
-
-        private final String shell;
-
-        Password(String userName, String passwordHash, int uid, int gid, String userFullName,
-                String homeDirectory, String shell)
-        {
-            this.userName = userName;
-            this.passwordHash = passwordHash;
-            this.uid = uid;
-            this.gid = gid;
-            this.userFullName = userFullName;
-            this.homeDirectory = homeDirectory;
-            this.shell = shell;
-        }
-
-        public String getUserName()
-        {
-            return userName;
-        }
-
-        public String getPasswordHash()
-        {
-            return passwordHash;
-        }
-
-        public int getUid()
-        {
-            return uid;
-        }
-
-        public int getGid()
-        {
-            return gid;
-        }
-
-        public String getUserFullName()
-        {
-            return userFullName;
-        }
-
-        public String getHomeDirectory()
-        {
-            return homeDirectory;
-        }
-
-        public String getShell()
-        {
-            return shell;
-        }
-    }
-
-    private static void throwLinkCreationException(String type, String source, String target,
-            String errorMessage)
-    {
-        throw new IOExceptionUnchecked(new IOException(String.format(
-                "Creating %s link '%s' -> '%s': %s", type, target, source, errorMessage)));
-    }
-
-    private static void throwStatException(String filename, String errorMessage)
-    {
-        throw new IOExceptionUnchecked(new IOException(String.format(
-                "Cannot obtain inode info for file '%s': %s", filename, errorMessage)));
-    }
-
-    private static void throwFileException(String operation, String filename, String errorMessage)
-    {
-        throw new IOExceptionUnchecked(new IOException(String.format("Cannot %s of file '%s': %s",
-                operation, filename, errorMessage)));
-    }
-
-    private static native int init();
-
-    private static native int getpid();
-
-    private static native int getuid();
-
-    private static native int geteuid();
-
-    private static native int getgid();
-
-    private static native int getegid();
-
-    private static native int link(String filename, String linktarget);
-
-    private static native int symlink(String filename, String linktarget);
-
-    private static native Stat stat(String filename);
-
-    private static native Stat lstat(String filename);
-
-    private static native String readlink(String filename, int linkvallen);
-
-    private static native int chmod(String filename, short mode);
-
-    private static native int chown(String filename, int uid, int gid);
-
-    private static native String getuser(int uid);
-
-    private static native String getgroup(int gid);
-
-    private static native int getuid(String user);
-
-    private static native Password getpwnam(String user);
-
-    private static native Password getpwuid(int uid);
-
-    private static native int getgid(String group);
-
-    private static native Group getgrnam(String group);
-
-    private static native Group getgrgid(int gid);
-
-    private static native String strerror(int errnum);
-
-    private static native String strerror();
-
-    @Private
-    static boolean isProcessRunningProcFS(int pid)
-    {
-        return new File("/proc/" + pid).isDirectory();
-    }
-
-    @Private
-    static boolean isProcessRunningPS(int pid)
-    {
-        try
-        {
-            return Runtime.getRuntime().exec(new String[]
-                { "ps", "-p", Integer.toString(pid) }).waitFor() == 0;
-        } catch (IOException ex)
-        {
-            return false;
-        } catch (InterruptedException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-
-    //
-    // Public
-    //
-
-    /**
-     * Returns <code>true</code>, if the native library has been loaded successfully and the link
-     * utilities are operational, <code>false</code> otherwise.
-     */
-    public static final boolean isOperational()
-    {
-        return operational;
-    }
-
-    /**
-     * Returns <code>true</code>, if process detection is available on this system.
-     */
-    public static boolean canDetectProcesses()
-    {
-        return processDetection != ProcessDetection.NONE;
-    }
-
-    /**
-     * Returns the last error that occurred in this class. Use this to find out what went wrong
-     * after {@link #tryGetLinkInfo(String)} or {@link #tryGetFileInfo(String)} returned
-     * <code>null</code>.
-     */
-    public static String getLastError()
-    {
-        return strerror();
-    }
-
-    //
-    // Process functions
-    //
-
-    /**
-     * Returns the process identifier of the current process.
-     */
-    public static int getPid()
-    {
-        return getpid();
-    }
-
-    /**
-     * Returns <code>true</code>, if the process with <var>pid</var> is currently running and
-     * <code>false</code>, if it is not running or if process detection is not available (
-     * {@link #canDetectProcesses()} <code>== false</code>).
-     */
-    public static boolean isProcessRunning(int pid)
-    {
-        switch (processDetection)
-        {
-            case PROCFS:
-                return isProcessRunningProcFS(pid);
-            case PS:
-                return isProcessRunningPS(pid);
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * Returns the uid of the user that started this process.
-     */
-    public static final int getUid()
-    {
-        return getuid();
-    }
-
-    /**
-     * Returns the effective uid that determines the permissions of this process.
-     */
-    public static final int getEuid()
-    {
-        return geteuid();
-    }
-
-    /**
-     * Returns the gid of the user that started this process.
-     */
-    public static final int getGid()
-    {
-        return getgid();
-    }
-
-    /**
-     * Returns the effective gid that determines the permissions of this process.
-     */
-    public static final int getEgid()
-    {
-        return getegid();
-    }
-
-    //
-    // File functions
-    //
-
-    /**
-     * Creates a hard link <var>linkName</var> that points to <var>fileName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the underlying system call fails, e.g. because
-     *             <var>linkName</var> already exists or <var>fileName</var> does not exist.
-     */
-    public static final void createHardLink(String fileName, String linkName)
-            throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        if (linkName == null)
-        {
-            throw new NullPointerException("linkName");
-        }
-        final int result = link(fileName, linkName);
-        if (result < 0)
-        {
-            throwLinkCreationException("hard", fileName, linkName, strerror(result));
-        }
-    }
-
-    /**
-     * Creates a symbolic link <var>linkName</var> that points to <var>fileName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the underlying system call fails, e.g. because
-     *             <var>linkName</var> already exists.
-     */
-    public static final void createSymbolicLink(String fileName, String linkName)
-            throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        if (linkName == null)
-        {
-            throw new NullPointerException("linkName");
-        }
-        final int result = symlink(fileName, linkName);
-        if (result < 0)
-        {
-            throwLinkCreationException("symbolic", fileName, linkName, strerror(result));
-        }
-    }
-
-    private static Stat tryGetStat(String fileName) throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        return stat(fileName);
-    }
-
-    private static Stat getStat(String fileName) throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        final Stat result = stat(fileName);
-        if (result == null)
-        {
-            throwStatException(fileName, strerror());
-        }
-        return result;
-    }
-
-    private static Stat tryGetLStat(String linkName) throws IOExceptionUnchecked
-    {
-        if (linkName == null)
-        {
-            throw new NullPointerException("linkName");
-        }
-        return lstat(linkName);
-    }
-
-    private static Stat getLStat(String linkName) throws IOExceptionUnchecked
-    {
-        if (linkName == null)
-        {
-            throw new NullPointerException("linkName");
-        }
-        final Stat result = lstat(linkName);
-        if (result == null)
-        {
-            throwStatException(linkName, strerror());
-        }
-        return result;
-    }
-
-    /**
-     * Returns the inode for the <var>fileName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final long getInode(String fileName) throws IOExceptionUnchecked
-    {
-        return getLStat(fileName).getInode();
-    }
-
-    /**
-     * Returns the number of hard links for the <var>fileName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final int getNumberOfHardLinks(String fileName) throws IOExceptionUnchecked
-    {
-        return getLStat(fileName).getNumberOfHardLinks();
-    }
-
-    /**
-     * Returns <code>true</code> if <var>fileName</var> is a symbolic link and <code>false</code>
-     * otherwise.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final boolean isSymbolicLink(String fileName) throws IOExceptionUnchecked
-    {
-        return getLStat(fileName).isSymbolicLink();
-    }
-
-    /**
-     * Returns the value of the symbolik link <var>linkName</var>, or <code>null</code>, if
-     * <var>linkName</var> is not a symbolic link.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final String tryReadSymbolicLink(String linkName) throws IOExceptionUnchecked
-    {
-        final Stat stat = getLStat(linkName);
-        return stat.isSymbolicLink() ? readlink(linkName, (int) stat.getSize()) : null;
-    }
-
-    /**
-     * Returns the information about <var>fileName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the file
-     *             does not exist.
-     */
-    public static final Stat getFileInfo(String fileName) throws IOExceptionUnchecked
-    {
-        return getStat(fileName);
-    }
-
-    /**
-     * Returns the information about <var>fileName</var>, or {@link NullPointerException}, if the
-     * information could not be obtained, e.g. because the file does not exist (call
-     * {@link #getLastError()} to find out what went wrong).
-     */
-    public static final Stat tryGetFileInfo(String fileName) throws IOExceptionUnchecked
-    {
-        return tryGetStat(fileName);
-    }
-
-    /**
-     * Returns the information about <var>linkName</var>.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final Stat getLinkInfo(String linkName) throws IOExceptionUnchecked
-    {
-        return getLinkInfo(linkName, true);
-    }
-
-    /**
-     * Returns the information about <var>linkName</var>. If
-     * <code>readSymbolicLinkTarget == true</code>, then the symbolic link target is read when
-     * <var>linkName</var> is a symbolic link.
-     * 
-     * @throws IOExceptionUnchecked If the information could not be obtained, e.g. because the link
-     *             does not exist.
-     */
-    public static final Stat getLinkInfo(String linkName, boolean readSymbolicLinkTarget)
-            throws IOExceptionUnchecked
-    {
-        final Stat stat = getLStat(linkName);
-        final String symbolicLinkOrNull =
-                (readSymbolicLinkTarget && stat.isSymbolicLink()) ? readlink(linkName,
-                        (int) stat.getSize()) : null;
-        stat.setSymbolicLinkOrNull(symbolicLinkOrNull);
-        return stat;
-    }
-
-    /**
-     * Returns the information about <var>linkName</var>, or {@link NullPointerException}, if the
-     * information could not be obtained, e.g. because the link does not exist (call
-     * {@link #getLastError()} to find out what went wrong).
-     */
-    public static final Stat tryGetLinkInfo(String linkName) throws IOExceptionUnchecked
-    {
-        return tryGetLinkInfo(linkName, true);
-    }
-
-    /**
-     * Returns the information about <var>linkName</var>, or <code>null</code> if the information
-     * can not be obtained, e.g. because the link does not exist (call {@link #getLastError()} to
-     * find out what went wrong). If <code>readSymbolicLinkTarget == true</code>, then the symbolic
-     * link target is read when <var>linkName</var> is a symbolic link.
-     */
-    public static final Stat tryGetLinkInfo(String linkName, boolean readSymbolicLinkTarget)
-            throws IOExceptionUnchecked
-    {
-        final Stat stat = tryGetLStat(linkName);
-        if (stat == null)
-        {
-            return null;
-        }
-        final String symbolicLinkOrNull =
-                (readSymbolicLinkTarget && stat.isSymbolicLink()) ? readlink(linkName,
-                        (int) stat.getSize()) : null;
-        stat.setSymbolicLinkOrNull(symbolicLinkOrNull);
-        return stat;
-    }
-
-    /**
-     * Sets the access mode of <var>filename</var> to the specified <var>mode</var> value.
-     */
-    public static final void setAccessMode(String fileName, short mode) throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        final int result = chmod(fileName, mode);
-        if (result < 0)
-        {
-            throwFileException("set mode", fileName, strerror(result));
-        }
-    }
-
-    /**
-     * Sets the owner of <var>filename</var> to the specified <var>uid</var> and <var>gid</var>
-     * values.
-     */
-    public static final void setOwner(String fileName, int uid, int gid)
-            throws IOExceptionUnchecked
-    {
-        if (fileName == null)
-        {
-            throw new NullPointerException("fileName");
-        }
-        final int result = chown(fileName, uid, gid);
-        if (result < 0)
-        {
-            throwFileException("set owner", fileName, strerror(result));
-        }
-    }
-
-    //
-    // User functions
-    //
-
-    /**
-     * Returns the name of the user identified by <var>uid</var>.
-     */
-    public static final String tryGetUserNameForUid(int uid)
-    {
-        return getuser(uid);
-    }
-
-    /**
-     * Returns the uid of the <var>userName</var>, or <code>-1</code>, if no user with this name
-     * exists.
-     */
-    public static final int getUidForUserName(String userName)
-    {
-        if (userName == null)
-        {
-            throw new NullPointerException("userName");
-        }
-        return getuid(userName);
-    }
-
-    /**
-     * Returns the {@link Password} for the given <var>userName</var>, or <code>null</code>, if no
-     * user with that name exists.
-     */
-    public static final Password tryGetUserByName(String userName)
-    {
-        if (userName == null)
-        {
-            throw new NullPointerException("userName");
-        }
-        return getpwnam(userName);
-    }
-
-    /**
-     * Returns the {@link Password} for the given <var>userName</var>, or <code>null</code>, if no
-     * user with that name exists.
-     */
-    public static final Password tryGetUserByUid(int uid)
-    {
-        return getpwuid(uid);
-    }
-
-    //
-    // Group functions
-    //
-
-    /**
-     * Returns the name of the group identified by <var>gid</var>, or <code>null</code>, if no group
-     * with that <var>gid</var> exists.
-     */
-    public static final String tryGetGroupNameForGid(int gid)
-    {
-        return getgroup(gid);
-    }
-
-    /**
-     * Returns the gid of the <var>groupName</var>, or <code>-1</code>, if no group with this name
-     * exists.
-     */
-    public static final int getGidForGroupName(String groupName)
-    {
-        if (groupName == null)
-        {
-            throw new NullPointerException("groupName");
-        }
-        return getgid(groupName);
-    }
-
-    /**
-     * Returns the {@link Group} for the given <var>groupName</var>, or <code>null</code>, if no
-     * group with that name exists.
-     */
-    public static final Group tryGetGroupByName(String groupName)
-    {
-        if (groupName == null)
-        {
-            throw new NullPointerException("groupName");
-        }
-        return getgrnam(groupName);
-    }
-
-    /**
-     * Returns the {@link Group} for the given <var>gid</var>, or <code>null</code>, if no group
-     * with that gid exists.
-     */
-    public static final Group tryGetGroupByGid(int gid)
-    {
-        return getgrgid(gid);
-    }
-
-    //
-    // Error
-    //
-
-    /**
-     * Returns the error string for the given <var>errnum</var>.
-     */
-    public static final String getErrorString(int errnum)
-    {
-        return strerror(errnum);
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/unix/package.html b/base/source/java/ch/systemsx/cisd/base/unix/package.html
deleted file mode 100644
index f8a97519adf36bd99fc3458e0753412bcd0b904c..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/unix/package.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-     "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Unix system calls.</title>
-</head>
-<body>
-<p>
-This package provides some basic (POSIX-compliant) Unix system calls.
-</p>
-</body>
-</html> 
\ No newline at end of file
diff --git a/base/source/java/ch/systemsx/cisd/base/utilities/AbstractBuildAndEnvironmentInfo.java b/base/source/java/ch/systemsx/cisd/base/utilities/AbstractBuildAndEnvironmentInfo.java
deleted file mode 100644
index 1a9dae60537ec01dc252213ae8eb814a1494e453..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/utilities/AbstractBuildAndEnvironmentInfo.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.utilities;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * Abstract of all classes providing build and environment information.
- * <p>
- * Does <em>not</em> depend on any library jar files.
- * </p>
- * 
- * @author Franz-Josef Elmer
- */
-public abstract class AbstractBuildAndEnvironmentInfo
-{
-    private static final String UNKNOWN = "UNKNOWN";
-
-    private final String version;
-
-    private final String revision;
-
-    private final boolean cleanSources;
-
-    private final String applicationName;
-
-    protected AbstractBuildAndEnvironmentInfo(String applicationName)
-    {
-        this.applicationName = applicationName;
-        String extractedVersion = UNKNOWN;
-        String extractedRevision = UNKNOWN;
-        boolean extractedCleanFlag = false;
-        final InputStream stream =
-                AbstractBuildAndEnvironmentInfo.class.getResourceAsStream("/BUILD-" + applicationName
-                        + ".INFO");
-        if (stream != null)
-        {
-            BufferedReader reader = null;
-            try
-            {
-                reader = new BufferedReader(new InputStreamReader(stream));
-                final String line = reader.readLine();
-                if (line != null)
-                {
-                    final StringTokenizer tokenizer = new StringTokenizer(line, ":");
-                    extractedVersion = tokenizer.nextToken();
-                    extractedRevision = tokenizer.nextToken();
-                    extractedCleanFlag = "clean".equals(tokenizer.nextToken());
-                }
-            } catch (IOException ex)
-            {
-                // ignored
-            } finally
-            {
-                try
-                {
-                    if (reader != null)
-                    {
-                        reader.close();
-                    }
-                } catch (IOException ioe)
-                {
-                    // ignore
-                }
-            }
-        }
-        this.version = extractedVersion;
-        this.revision = extractedRevision;
-        this.cleanSources = extractedCleanFlag;
-    }
-
-    private final static String getProperty(final String property)
-    {
-        return System.getProperty(property, UNKNOWN);
-    }
-
-    private final static boolean isUnknown(final String property)
-    {
-        return property.equals(UNKNOWN);
-    }
-
-    /**
-     * @return Name of the CPU architecture.
-     */
-    public final String getCPUArchitecture()
-    {
-        return getProperty("os.arch");
-    }
-
-    /**
-     * @return Name and version of the operating system.
-     */
-    public final String getOS()
-    {
-        final String osName = getProperty("os.name");
-        final String osVersion = getProperty("os.version");
-        if (isUnknown(osName) || isUnknown(osVersion))
-        {
-            return osName;
-        }
-        return osName + " (v" + osVersion + ")";
-    }
-
-    /**
-     * @return Name and version of the Java Virtual Machine.
-     */
-    public final String getJavaVM()
-    {
-        final String vmName = getProperty("java.vm.name");
-        final String vmVersion = getProperty("java.vm.version");
-        if (isUnknown(vmName) || isUnknown(vmVersion))
-        {
-            return vmName;
-        }
-        return vmName + " (v" + vmVersion + ")";
-    }
-
-    /**
-     * @return The version of the software.
-     */
-    public final String getVersion()
-    {
-        return version;
-    }
-
-    /**
-     * @return <code>true</code> if the versioned entities of the working copy have been clean when
-     *         this build has been made, in other words, whether the revision given by
-     *         {@link #getRevision()} does really identify the source that is build has been
-     *         produced from.
-     */
-    public final boolean isCleanSources()
-    {
-        return cleanSources;
-    }
-
-    /**
-     * @return The revision number.
-     */
-    public final String getRevision()
-    {
-        return revision;
-    }
-
-    /**
-     * Returns the version accompanied by the build number of the software (if known).
-     */
-    public final String getFullVersion()
-    {
-        final StringBuilder builder = new StringBuilder();
-        final String rev = getRevision();
-        final boolean isDirty = isCleanSources() == false;
-        builder.append(getVersion());
-        if (isUnknown(rev) == false)
-        {
-            builder.append(" (r").append(rev);
-            if (isDirty)
-            {
-                builder.append("*");
-            }
-            builder.append(")");
-        } else
-        {
-            if (isDirty)
-            {
-                builder.append("*");
-            }
-        }
-        return builder.toString();
-    }
-
-    public String getApplicationName()
-    {
-        return applicationName;
-    }
-
-    /**
-     * Returns version, build number, Java VM, and OS as a {@link List} with four entries.
-     */
-    public final List<String> getEnvironmentInfo()
-    {
-        final List<String> environmentInfo = new ArrayList<String>();
-        environmentInfo.add("Application: " + getApplicationName());
-        environmentInfo.add("Version: " + getFullVersion());
-        environmentInfo.add("Java VM: " + getJavaVM());
-        environmentInfo.add("CPU Architecture: " + getCPUArchitecture());
-        environmentInfo.add("OS: " + getOS());
-        return environmentInfo;
-    }
-
-    /**
-     * Returns version, build number, Java VM, and OS in a four-liner as one {@link String}.
-     */
-    @Override
-    public final String toString()
-    {
-        final StringBuilder builder = new StringBuilder();
-        final List<String> environmentInfo = getEnvironmentInfo();
-        final int n = environmentInfo.size();
-        for (int i = 0; i < n; i++)
-        {
-            builder.append(environmentInfo.get(i));
-            if (i < n - 1)
-            {
-                builder.append(System.getProperty("line.separator"));
-            }
-        }
-        return builder.toString();
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/utilities/NativeLibraryUtilities.java b/base/source/java/ch/systemsx/cisd/base/utilities/NativeLibraryUtilities.java
deleted file mode 100644
index e336aeb6307977eb2553b77245f805084585fd98..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/utilities/NativeLibraryUtilities.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.utilities;
-
-import java.io.File;
-
-/**
- * A library for loading native libraries.
- * 
- * @author Bernd Rinn
- */
-public final class NativeLibraryUtilities
-{
-    private static final String JNI_LIB_PREFIX = getJNILibPrefixForSystem();
-
-    private static final String JNI_LIB_EXTENSION = getJNILibExtensionForSystem();
-
-    private static String getJNILibPrefixForSystem()
-    {
-        return OSUtilities.isWindows() ? "" : "lib";
-    }
-    
-    private static String getJNILibExtensionForSystem()
-    {
-        if (OSUtilities.isMacOS())
-        {
-            return "jnilib";
-        } else if (OSUtilities.isWindows())
-        {
-            return "dll";
-        } else
-        {
-            return "so";
-        }
-    }
-
-    /**
-     * Loads the native library <var>libraryName</var>. The native library will be searched for in
-     * this way:
-     * <ol>
-     * <li>Try to use {@link System#loadLibrary(String)}. If this fails, use the next method.</li>
-     * <li>The library path can either be provided as a Java property {@code
-     * native.libpath.<libraryName>}.</li>
-     * <li>Or a prefix on the filesystem can be provided by specifying the Java property {@code
-     * native.libpath} and then the library is expected to be in {@code
-     * <native.libpath>/<libraryName>/<platform_id>/<libraryName>.so}.</li>
-     * <li>Finally, the routine will try to find the library as a resource in the class path with
-     * resource name {@code /native/<libraryName>/<platform_id>/<libraryName>.so}.</li>
-     * </ol>
-     * 
-     * @return <code>true</code> if the library has been loaded successfully and <code>false</code>
-     *         otherwise.
-     */
-    public static boolean loadNativeLibrary(final String libraryName)
-    {
-        // Try specific path
-        String linkLibNameOrNull = System.getProperty("native.libpath." + libraryName);
-        if (linkLibNameOrNull != null)
-        {
-            return loadLib(linkLibNameOrNull);
-        }
-
-        // Try generic path
-        final String linkLibPathOrNull = System.getProperty("native.libpath");
-        if (linkLibPathOrNull != null)
-        {
-            linkLibNameOrNull = getLibPath(linkLibPathOrNull, libraryName);
-            return loadLib(linkLibNameOrNull);
-        }
-
-        // Try resource
-        linkLibNameOrNull = tryCopyNativeLibraryToTempFile(libraryName);
-        if (linkLibNameOrNull != null)
-        {
-            return loadLib(linkLibNameOrNull);
-        }
-        // Finally, try system dependent loading
-        return loadSystemLibrary(libraryName);
-    }
-
-    private static boolean loadLib(String libPath)
-    {
-        final File linkLib = new File(libPath);
-        if (linkLib.exists() && linkLib.canRead() && linkLib.isFile())
-        {
-            final String linkLibNameAbsolute = linkLib.getAbsolutePath();
-            try
-            {
-                System.load(linkLibNameAbsolute);
-                return true;
-            } catch (final Throwable err)
-            {
-                System.err.printf("Native library '%s' failed to load:\n", linkLibNameAbsolute);
-                err.printStackTrace();
-                return false;
-            }
-        } else
-        {
-            System.err.printf("Native library '%s' does not exist or is not readable.\n", linkLib
-                    .getAbsolutePath());
-            return false;
-        }
-    }
-
-    private static boolean loadSystemLibrary(String libName)
-    {
-        try
-        {
-            System.loadLibrary(libName);
-            return true;
-        } catch (Throwable th)
-        {
-            // Silence this - we return failure back as boolean value.
-            return false;
-        }
-    }
-
-    /**
-     * Tries to copy a native library which is available as a resource to a temporary file. It will
-     * use the following naming schema to locate the resource containing the native library:
-     * <p>
-     * {@code /native/<libraryName>/<platform_id>/<libraryName>.so}.
-     * 
-     * @param libraryName The name of the library.
-     * @return The name of the temporary file, or <code>null</code>, if the resource could not be
-     *         copied.
-     */
-    public static String tryCopyNativeLibraryToTempFile(final String libraryName)
-    {
-        // Request clean-up of old native library temp files as under Windows the files are locked and 
-        // cannot be deleted on regular shutdown. 
-        return ResourceUtilities.tryCopyResourceToTempFile(getLibPath("/native", libraryName),
-                libraryName, ".so", true);
-    }
-
-    private static String getLibPath(final String prefix, final String libraryName)
-    {
-        return String.format("%s/%s/%s/%s%s.%s", prefix, libraryName, OSUtilities
-                .getCompatibleComputerPlatform(), JNI_LIB_PREFIX, libraryName, JNI_LIB_EXTENSION);
-    }
-    
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/utilities/OSUtilities.java b/base/source/java/ch/systemsx/cisd/base/utilities/OSUtilities.java
deleted file mode 100644
index 11e848590516d8fe2fb8819dc85f8375afe1e43b..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/utilities/OSUtilities.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright 2007 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.utilities;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * Some useful methods related to the operating system.
- * <p>
- * Does <em>not</em> depend on any library jar files. But before using or extending this class and
- * if you do not mind using <a href="http://jakarta.apache.org/commons/lang/">commons lang</a>, then
- * have a look on <code>SystemUtils</code>.
- * </p>
- * 
- * @author Bernd Rinn
- */
-public class OSUtilities
-{
-
-    /** Platform specific line separator. */
-    public static final String LINE_SEPARATOR = System.getProperty("line.separator");
-
-    /**
-     * @return <code>true</code> if the operating system is UNIX like.
-     */
-    public static boolean isUnix()
-    {
-        return (File.separatorChar == '/');
-    }
-
-    /**
-     * @return <code>true</code> if the operating system is a MS Windows type.
-     */
-    public static boolean isWindows()
-    {
-        return (File.separatorChar == '\\');
-    }
-
-    /**
-     * @return <code>true</code> if the the operating system is a flavor of Mac OS X.
-     */
-    public static boolean isMacOS()
-    {
-        return "Mac OS X".equals(System.getProperty("os.name"));
-    }
-
-    /**
-     * @return The name of the computer platform that is compatible with respect to executables (CPU
-     *         architecture and OS name, both as precise as possible to be able to share libraries
-     *         and binaries).
-     */
-    public static String getCompatibleComputerPlatform()
-    {
-        String osName = System.getProperty("os.name");
-        if (osName.startsWith("Windows"))
-        {
-            osName = "Windows";
-        }
-        return System.getProperty("os.arch") + "-" + osName;
-    }
-
-    /**
-     * @return The name of the CPU architecture.
-     */
-    public static String getCPUArchitecture()
-    {
-        return System.getProperty("os.arch");
-    }
-
-    /**
-     * @return The name of the operating system.
-     */
-    public static String getOSName()
-    {
-        return System.getProperty("os.name");
-    }
-
-    /**
-     * @return The name of the computer platform (CPU architecture and OS name).
-     */
-    public static String getComputerPlatform()
-    {
-        return System.getProperty("os.arch") + "-" + System.getProperty("os.name");
-    }
-
-    /**
-     * @return The name of user that runs this program.
-     */
-    public static String getUsername()
-    {
-        return System.getProperty("user.name");
-    }
-
-    /**
-     * @return <code>true</code> if the user that runs this program is known to have root privileges
-     *         (based on his name).
-     */
-    public static boolean isRoot()
-    {
-        if (isUnix())
-        {
-            return "root".equals(getUsername());
-        } else
-        {
-            return "Administrator".equals(getUsername());
-        }
-    }
-
-    /**
-     * @return The <var>PATH</var> as provided by the operating system.
-     */
-    public static Set<String> getOSPath()
-    {
-        final String[] pathEntries =
-                System.getenv("PATH").split(Pattern.quote(System.getProperty("path.separator")));
-        return new LinkedHashSet<String>(Arrays.asList(pathEntries));
-    }
-
-    /**
-     * @param root Whether the path should be prepared for root or not.
-     * @return The path as provided by the operating system plus some path entries that should
-     *         always be available.
-     * @see #getOSPath()
-     */
-    public static Set<String> getSafeOSPath(boolean root)
-    {
-        final Set<String> pathEntries = getOSPath();
-        if (isUnix())
-        {
-            if (isMacOS())
-            {
-                pathEntries.add("/opt/local/bin"); // MacPorts
-                pathEntries.add("/sw/bin"); // Fink
-                if (root)
-                {
-                    pathEntries.add("/opt/local/sbin");
-                    pathEntries.add("/sw/sbin");
-                }
-            }
-            pathEntries.add("/usr/local/bin");
-            pathEntries.add("/usr/bin");
-            pathEntries.add("/bin");
-            if (root)
-            {
-                pathEntries.add("/usr/local/sbin");
-                pathEntries.add("/usr/sbin");
-                pathEntries.add("/sbin");
-            }
-        }
-        return pathEntries;
-    }
-
-    /**
-     * Convenience method for {@link #getSafeOSPath(boolean)} with <code>root=false</code>.
-     * 
-     * @return The path as provided by the operating system plus some path entries that should
-     *         always be available.
-     * @see #getSafeOSPath(boolean)
-     */
-    public static Set<String> getSafeOSPath()
-    {
-        return getSafeOSPath(false);
-    }
-
-    /**
-     * Search for the binary program with name <code>binaryName</code> in the operating system
-     * path..
-     * 
-     * @param executableName The name of the executable to search for. Under Windows, a name with
-     *            and without <code>.exe</code> appended will work, but the executable found needs
-     *            to have the .exe extension.
-     * @return The binary file that has been found in the path, or <code>null</code>, if no binary
-     *         file could be found.
-     */
-    public static File findExecutable(String executableName)
-    {
-        return OSUtilities.findExecutable(executableName, getSafeOSPath());
-    }
-
-    /**
-     * Search for the binary program with name <code>binaryName</code> in the set of paths denoted
-     * by <code>pathSet</code>.
-     * 
-     * @param executableName The name of the executable to search for. Under Windows, a name with
-     *            and without <code>.exe</code> appended will work, but the executable found needs
-     *            to have the .exe extension.
-     * @param pathSet The set of paths to search for. It is recommended to use an ordered set like
-     *            the {@link LinkedHashSet} here in order to get results that are independent of the
-     *            JRE implementation.
-     * @return The binary file that has been found in the path, or <code>null</code>, if no binary
-     *         file could be found.
-     */
-    public static File findExecutable(String executableName, Set<String> pathSet)
-    {
-        final String executableNameWithExtension =
-                addWindowsExecutableExtensionIfNecessary(executableName);
-        for (String dir : pathSet)
-        {
-            final File fileToCheck = new File(dir, executableNameWithExtension);
-            if (fileToCheck.exists())
-            {
-                return fileToCheck;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @return <code>true</code> if and only if an executable of name <var>executableName</var>
-     *         exists.
-     */
-    public static boolean executableExists(String executableName)
-    {
-        return (new File(OSUtilities.addWindowsExecutableExtensionIfNecessary(executableName)))
-                .exists();
-    }
-
-    /**
-     * @return <code>true</code> if and only if an executable of name <var>executableName</var>
-     *         exists.
-     */
-    public static boolean executableExists(File executable)
-    {
-        return (new File(OSUtilities.addWindowsExecutableExtensionIfNecessary(executable.getPath())))
-                .exists();
-    }
-
-    private static String addWindowsExecutableExtensionIfNecessary(String executableName)
-    {
-        if (isWindows() && executableName.indexOf('.') < 0)
-        {
-            return executableName + ".exe";
-        } else
-        {
-            return executableName;
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/utilities/ResourceUtilities.java b/base/source/java/ch/systemsx/cisd/base/utilities/ResourceUtilities.java
deleted file mode 100644
index 404c75464bd847fd7a8e136b5ef66ee7a1ef5949..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/utilities/ResourceUtilities.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.utilities;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.filefilter.WildcardFileFilter;
-
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * Utilities for handling Java resources.
- * 
- * @author Bernd Rinn
- */
-public class ResourceUtilities
-{
-
-    /**
-     * Tries to copy the resource with the given name to a temporary file.
-     * 
-     * @param resource The name of the resource to copy.
-     * @param prefix The prefix to use for the temporary name.
-     * @param postfix The postfix to use for the temporary name.
-     * @return The name of the temporary file, or <code>null</code>, if the resource could not be
-     *         copied.
-     */
-    public static String tryCopyResourceToTempFile(final String resource, final String prefix,
-            final String postfix)
-    {
-        try
-        {
-            return copyResourceToTempFile(resource, prefix, postfix);
-        } catch (final Exception ex)
-        {
-            return null;
-        }
-    }
-
-    /**
-     * Tries to copy the resource with the given name to a temporary file.
-     * 
-     * @param resource The name of the resource to copy.
-     * @param prefix The prefix to use for the temporary name.
-     * @param postfix The postfix to use for the temporary name.
-     * @param cleanUpOldResources If <code>true</code>, remove old leftover temporary files for this
-     *            <var>prefix</var> and <var>postfix</var>.
-     * @return The name of the temporary file, or <code>null</code>, if the resource could not be
-     *         copied.
-     */
-    public static String tryCopyResourceToTempFile(final String resource, final String prefix,
-            final String postfix, final boolean cleanUpOldResources)
-    {
-        try
-        {
-            return copyResourceToTempFile(resource, prefix, postfix, cleanUpOldResources);
-        } catch (final Exception ex)
-        {
-            return null;
-        }
-    }
-
-    /**
-     * Copies the resource with the given name to a temporary file. The file will be deleted on
-     * program exit.
-     * 
-     * @param resource The name of the resource to copy.
-     * @param prefix The prefix to use for the temporary name.
-     * @param postfix The postfix to use for the temporary name.
-     * @return The name of the temporary file.
-     * @throws IllegalArgumentException If the resource cannot be found in the class path.
-     * @throws IOExceptionUnchecked If an {@link IOException} occurs.
-     */
-    public static String copyResourceToTempFile(final String resource, final String prefix,
-            final String postfix) throws IOExceptionUnchecked
-    {
-        return copyResourceToTempFile(resource, prefix, postfix, false);
-    }
-
-    /**
-     * Copies the resource with the given name to a temporary file. The file will be deleted on
-     * program exit.
-     * 
-     * @param resource The name of the resource to copy.
-     * @param prefix The prefix to use for the temporary name.
-     * @param postfix The postfix to use for the temporary name.
-     * @param cleanUpOldResources If <code>true</code>, remove old leftover temporary files for this
-     *            <var>prefix</var> and <var>postfix</var>.
-     * @return The name of the temporary file.
-     * @throws IllegalArgumentException If the resource cannot be found in the class path.
-     * @throws IOExceptionUnchecked If an {@link IOException} occurs.
-     */
-    public static String copyResourceToTempFile(final String resource, final String prefix,
-            final String postfix, final boolean cleanUpOldResources) throws IOExceptionUnchecked
-    {
-        if (cleanUpOldResources)
-        {
-            deleteOldResourceTempFiles(prefix, postfix);
-        }
-        final InputStream resourceStream = ResourceUtilities.class.getResourceAsStream(resource);
-        if (resourceStream == null)
-        {
-            throw new IllegalArgumentException("Resource '" + resource + "' not found.");
-        }
-        try
-        {
-            final File tempFile = File.createTempFile(prefix, postfix);
-            tempFile.deleteOnExit();
-            final OutputStream fileStream = new FileOutputStream(tempFile);
-            try
-            {
-                IOUtils.copy(resourceStream, fileStream);
-                fileStream.close();
-            } finally
-            {
-                IOUtils.closeQuietly(fileStream);
-            }
-            return tempFile.getAbsolutePath();
-        } catch (final IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        } finally
-        {
-            IOUtils.closeQuietly(resourceStream);
-        }
-    }
-
-    private static void deleteOldResourceTempFiles(final String prefix, final String postfix)
-    {
-        final FilenameFilter filter = new WildcardFileFilter(prefix + "*" + postfix);
-        for (File file : new File(System.getProperty("java.io.tmpdir")).listFiles(filter))
-        {
-            file.delete();
-        }
-    }
-
-}
diff --git a/base/source/java/ch/systemsx/cisd/base/utilities/package.html b/base/source/java/ch/systemsx/cisd/base/utilities/package.html
deleted file mode 100644
index d7eda7fb3c8bcce965bd3dbec3509845f4bf49e9..0000000000000000000000000000000000000000
--- a/base/source/java/ch/systemsx/cisd/base/utilities/package.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-     "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Basic utilities.</title>
-</head>
-<body>
-<p>
-This package provides some basic utility classes. 
-</p>
-</body>
-</html> 
\ No newline at end of file
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/AllTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/AllTests.java
deleted file mode 100644
index 3d6288f5f6f2edfc607c7f2707ce4ed347503246..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/AllTests.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base;
-
-import ch.systemsx.cisd.base.convert.NativeDataTests;
-import ch.systemsx.cisd.base.convert.NativeTaggedArrayTests;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUncheckedTests;
-import ch.systemsx.cisd.base.io.ByteBufferRandomAccessFileTests;
-import ch.systemsx.cisd.base.io.RandomAccessFileImplTests;
-import ch.systemsx.cisd.base.mdarray.MDArrayTests;
-import ch.systemsx.cisd.base.namedthread.NamingThreadPoolExecutorTest;
-import ch.systemsx.cisd.base.unix.Unix;
-import ch.systemsx.cisd.base.unix.UnixTests;
-
-/**
- * Run all unit tests.
- *
- * @author Bernd Rinn
- */
-public class AllTests
-{
-
-    public static void main(String[] args) throws Throwable
-    {
-        NativeDataTests.main(args);
-        System.out.println();
-        NativeTaggedArrayTests.main(args);
-        System.out.println();
-        IOExceptionUncheckedTests.main(args);
-        System.out.println();
-        ByteBufferRandomAccessFileTests.main(args);
-        System.out.println();
-        RandomAccessFileImplTests.main(args);
-        System.out.println();
-        MDArrayTests.main(args);
-        System.out.println();
-        NamingThreadPoolExecutorTest.main(args);
-        System.out.println();
-        if (Unix.isOperational())
-        {
-            UnixTests.main(args);
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeDataTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeDataTests.java
deleted file mode 100644
index d4a68e28526d687b70fc237006103447690d2705..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeDataTests.java
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * Copyright 2009 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.convert;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertFalse;
-import static org.testng.AssertJUnit.assertTrue;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-import ch.systemsx.cisd.base.convert.NativeData.ByteOrder;
-
-/**
- * Test cases for {@link NativeData}.
- * 
- * @author Bernd Rinn
- */
-public class NativeDataTests
-{
-
-    @DataProvider(name = "getOfs")
-    private Object[][] getOfs()
-    {
-        return new Object[][]
-            {
-                { 0, 0 },
-                { 0, 1 },
-                { 0, 2 },
-                { 0, 3 },
-                { 1, 0 },
-                { 1, 1 },
-                { 1, 2 },
-                { 1, 3 },
-                { 2, 0 },
-                { 2, 1 },
-                { 2, 2 },
-                { 2, 3 },
-                { 3, 0 },
-                { 3, 1 },
-                { 3, 2 },
-                { 3, 3 }, };
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testIntToByteToInt(int sourceOfs, int targetOfs)
-    {
-        final int sizeOfTarget = 4;
-        final int[] orignalArr = new int[]
-            { -1, 17, 100000, -1000000 };
-        final int[] iarr = new int[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyIntToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final int[] iarr2 = new int[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToInt(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test
-    public void testIntChangeByteOrderAndBack()
-    {
-        assertEquals(0, NativeData.changeByteOrder(NativeData.changeByteOrder(0)));
-        assertEquals(1, NativeData.changeByteOrder(NativeData.changeByteOrder(1)));
-        assertEquals(-1, NativeData.changeByteOrder(NativeData.changeByteOrder(-1)));
-        assertEquals(Integer.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Integer.MAX_VALUE)));
-        assertEquals(Integer.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Integer.MIN_VALUE)));
-    }
-
-    @Test
-    public void testShortChangeByteOrderAndBack()
-    {
-        assertEquals((short) 0, NativeData.changeByteOrder(NativeData.changeByteOrder((short) 0)));
-        assertEquals((short) 1, NativeData.changeByteOrder(NativeData.changeByteOrder((short) 1)));
-        assertEquals((short) -1, NativeData.changeByteOrder(NativeData.changeByteOrder((short) -1)));
-        assertEquals(Short.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Short.MAX_VALUE)));
-        assertEquals(Short.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Short.MIN_VALUE)));
-    }
-
-    @Test
-    public void testCharChangeByteOrderAndBack()
-    {
-        assertEquals((char) 0, NativeData.changeByteOrder(NativeData.changeByteOrder((char) 0)));
-        assertEquals((char) 1, NativeData.changeByteOrder(NativeData.changeByteOrder((char) 1)));
-        assertEquals((char) -1, NativeData.changeByteOrder(NativeData.changeByteOrder((char) -1)));
-        assertEquals((char) Short.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder((char) Short.MAX_VALUE)));
-        assertEquals((char) Short.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder((char) Short.MIN_VALUE)));
-    }
-
-    @Test
-    public void testLongChangeByteOrderAndBack()
-    {
-        assertEquals(0, NativeData.changeByteOrder(NativeData.changeByteOrder(0L)));
-        assertEquals(1, NativeData.changeByteOrder(NativeData.changeByteOrder(1L)));
-        assertEquals(-1, NativeData.changeByteOrder(NativeData.changeByteOrder(-1L)));
-        assertEquals(Long.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Long.MAX_VALUE)));
-        assertEquals(Long.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Long.MIN_VALUE)));
-    }
-
-    @Test
-    public void testFloatChangeByteOrderAndBack()
-    {
-        assertEquals(0f, NativeData.changeByteOrder(NativeData.changeByteOrder(0f)));
-        assertEquals(1f, NativeData.changeByteOrder(NativeData.changeByteOrder(1f)));
-        assertEquals(-1f, NativeData.changeByteOrder(NativeData.changeByteOrder(-1f)));
-        assertEquals(Float.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Float.MAX_VALUE)));
-        assertEquals(Float.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Float.MIN_VALUE)));
-        assertEquals(-Float.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(-Float.MAX_VALUE)));
-        assertEquals(-Float.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(-Float.MIN_VALUE)));
-    }
-
-    @Test
-    public void testDoubleChangeByteOrderAndBack()
-    {
-        assertEquals(0., NativeData.changeByteOrder(NativeData.changeByteOrder(0.)));
-        assertEquals(1., NativeData.changeByteOrder(NativeData.changeByteOrder(1.)));
-        assertEquals(-1., NativeData.changeByteOrder(NativeData.changeByteOrder(-1.)));
-        assertEquals(Double.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Double.MAX_VALUE)));
-        assertEquals(Double.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(Double.MIN_VALUE)));
-        assertEquals(-Double.MAX_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(-Double.MAX_VALUE)));
-        assertEquals(-Double.MIN_VALUE,
-                NativeData.changeByteOrder(NativeData.changeByteOrder(-Double.MIN_VALUE)));
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testLongToByteToLong(int sourceOfs, int targetOfs)
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 8;
-        final long[] orignalArr = new long[]
-            { -1, 17, 100000, -1000000 };
-        final long[] iarr = new long[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyLongToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final long[] iarr2 = new long[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToLong(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testShortToByteToShort(int sourceOfs, int targetOfs)
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 2;
-        final short[] orignalArr = new short[]
-            { -1, 17, 20000, (short) -50000 };
-        final short[] iarr = new short[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyShortToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final short[] iarr2 = new short[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToShort(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testCharToByteToChar(int sourceOfs, int targetOfs)
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 2;
-        final char[] orignalArr = new char[]
-            { 'c', ';', '\u0222', '\u1000' };
-        final char[] iarr = new char[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyCharToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final char[] iarr2 = new char[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToChar(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testFloatToByteToFloat(int sourceOfs, int targetOfs)
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 4;
-        final float[] orignalArr = new float[]
-            { -1, 17, 3.14159f, -1e6f };
-        final float[] iarr = new float[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyFloatToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final float[] iarr2 = new float[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToFloat(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test(dataProvider = "getOfs")
-    public void testDoubleToByteToDouble(int sourceOfs, int targetOfs)
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 8;
-        final double[] orignalArr = new double[]
-            { -1, 17, 3.14159, -1e42 };
-        final double[] iarr = new double[sourceOfs + orignalArr.length];
-        System.arraycopy(orignalArr, 0, iarr, sourceOfs, orignalArr.length);
-        final byte[] barr = new byte[iarr.length * sizeOfTarget + targetOfs];
-        NativeData.copyDoubleToByte(iarr, sourceOfs, barr, targetOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        final double[] iarr2 = new double[(barr.length - targetOfs) / sizeOfTarget];
-        NativeData.copyByteToDouble(barr, targetOfs, iarr2, sourceOfs, orignalArr.length,
-                NativeData.ByteOrder.NATIVE);
-        assertTrue(Arrays.equals(iarr, iarr2));
-    }
-
-    @Test
-    public void testShortEndianConversion()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final short[] values = new short[]
-            { 1, 2, 4, 8, 16, 256, 512 };
-        final short[] convertedValuesExpected = new short[]
-            { 1 << 8, 1 << 9, 1 << 10, 1 << 11, 1 << 12, 1, 2 };
-        final short[] convertedValuesFound =
-                NativeData.byteToShort(NativeData.shortToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.LITTLE_ENDIAN);
-        assertTrue(Arrays.equals(convertedValuesExpected, convertedValuesFound));
-    }
-
-    @Test
-    public void testIntEndianConversion()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int[] values = new int[]
-            { 1, 2, 4, 8, 16, 256, 1 << 16 };
-        final int[] convertedValuesExpected = new int[]
-            { 1 << 24, 1 << 25, 1 << 26, 1 << 27, 1 << 28, 1 << 16, 256 };
-        final int[] convertedValuesFound =
-                NativeData.byteToInt(NativeData.intToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.LITTLE_ENDIAN);
-        assertTrue(Arrays.equals(convertedValuesExpected, convertedValuesFound));
-    }
-
-    @Test
-    public void testLongEndianConversion()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final long[] values = new long[]
-            { 1, 2, 4, 8, 16, 256, 1L << 16, 1L << 24 };
-        final long[] convertedValuesExpected = new long[]
-            { 1L << 56, 1L << 57, 1L << 58, 1L << 59, 1L << 60, 1L << 48, 1L << 40, 1L << 32 };
-        final long[] convertedValuesFound =
-                NativeData.byteToLong(NativeData.longToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.LITTLE_ENDIAN);
-        assertTrue(Arrays.equals(convertedValuesExpected, convertedValuesFound));
-    }
-
-    @Test
-    public void testFloatLittleEndianRoundtrip()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final float[] values = new float[]
-            { 1.1f, 2.2f, 3.3f, 1e-25f, 1e25f };
-        final float[] convertedValuesFound =
-                NativeData.byteToFloat(NativeData.floatToByte(values, ByteOrder.LITTLE_ENDIAN),
-                        ByteOrder.LITTLE_ENDIAN);
-        assertTrue(Arrays.equals(values, convertedValuesFound));
-    }
-
-    @Test
-    public void testFloatBigEndianRoundtrip()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final float[] values = new float[]
-            { 1.1f, 2.2f, 3.3f, 1e-25f, 1e25f };
-        final float[] convertedValuesFound =
-                NativeData.byteToFloat(NativeData.floatToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.BIG_ENDIAN);
-        assertTrue(Arrays.equals(values, convertedValuesFound));
-    }
-
-    @Test
-    public void testDoubleLittleEndianRoundtrip()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final double[] values = new double[]
-            { 1.1f, 2.2f, 3.3f, 1e-25f, 1e25f };
-        final double[] convertedValuesFound =
-                NativeData.byteToDouble(NativeData.doubleToByte(values, ByteOrder.LITTLE_ENDIAN),
-                        ByteOrder.LITTLE_ENDIAN);
-        assertTrue(Arrays.equals(values, convertedValuesFound));
-    }
-
-    @Test
-    public void testDoubleBigEndianRoundtrip()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final double[] values = new double[]
-            { 1.1, 2.2, 3.3, 1e-25, 1e25 };
-        final double[] convertedValuesFound =
-                NativeData.byteToDouble(NativeData.doubleToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.BIG_ENDIAN);
-        assertTrue(Arrays.equals(values, convertedValuesFound));
-    }
-
-    @Test(expectedExceptions = NullPointerException.class)
-    public void testNPE()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        NativeData.copyByteToLong(null, 0, null, 0, 0, ByteOrder.NATIVE);
-    }
-
-    @Test(expectedExceptions = IndexOutOfBoundsException.class)
-    public void testIOOB()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        NativeData.copyByteToLong(new byte[] {}, -1, new long[] {}, 0, 0, ByteOrder.NATIVE);
-    }
-
-    @Test(expectedExceptions = IndexOutOfBoundsException.class)
-    public void testIOOB2()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        NativeData.copyByteToLong(new byte[] {}, 0, new long[] {}, 10, 0, ByteOrder.NATIVE);
-    }
-
-    @Test
-    public void testPlatformEndiness()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final double[] values = new double[]
-            { 1.1, 2.2, 3.3, 1e-200, 1e200 };
-        final double[] valuesLE =
-                NativeData.byteToDouble(NativeData.doubleToByte(values, ByteOrder.LITTLE_ENDIAN),
-                        ByteOrder.NATIVE);
-        final double[] valuesBE =
-                NativeData.byteToDouble(NativeData.doubleToByte(values, ByteOrder.BIG_ENDIAN),
-                        ByteOrder.NATIVE);
-        if (Arrays.equals(values, valuesLE))
-        {
-            assertEquals(NativeData.ByteOrder.LITTLE_ENDIAN, NativeData.getNativeByteOrder());
-            assertFalse(Arrays.equals(values, valuesBE));
-        }
-        if (Arrays.equals(values, valuesBE))
-        {
-            assertEquals(NativeData.ByteOrder.BIG_ENDIAN, NativeData.getNativeByteOrder());
-            assertFalse(Arrays.equals(values, valuesLE));
-        }
-    }
-
-    @Test
-    public void testFloatToByteNonNativeByteOrderPartialOutputArray()
-    {
-        assertTrue(NativeData.isUseNativeLib());
-        final int sizeOfTarget = 4;
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final float[] iarr = new float[]
-            { -1, 17, 3.14159f, -1e6f };
-        final byte[] headerArray = new byte[]
-            { 1, 2, 3, 4 };
-        final byte[] trailerArray = new byte[]
-            { 5, 6, 7, 8 };
-        final byte[] barr =
-                new byte[iarr.length * sizeOfTarget + headerArray.length + trailerArray.length];
-        System.arraycopy(headerArray, 0, barr, 0, headerArray.length);
-        System.arraycopy(trailerArray, 0, barr, headerArray.length + iarr.length * sizeOfTarget,
-                trailerArray.length);
-        NativeData.copyFloatToByte(iarr, 0, barr, headerArray.length, iarr.length,
-                nonNativeByteOrder);
-        final byte[] headerArray2 = ArrayUtils.subarray(barr, 0, headerArray.length);
-        final byte[] trailerArray2 =
-                ArrayUtils.subarray(barr, headerArray.length + iarr.length * sizeOfTarget,
-                        barr.length);
-        assertTrue(Arrays.equals(headerArray, headerArray2));
-        assertTrue(Arrays.equals(trailerArray, trailerArray2));
-    }
-
-    private void afterClass()
-    {
-    }
-
-    private void setUp()
-    {
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + NativeDataTests.class.getSimpleName());
-        System.out.println();
-        NativeData.ensureNativeLibIsLoaded();
-        final NativeDataTests test = new NativeDataTests();
-        try
-        {
-            for (Method m : NativeDataTests.class.getMethods())
-            {
-                final Test testAnnotation = m.getAnnotation(Test.class);
-                if (testAnnotation == null)
-                {
-                    continue;
-                }
-                if (m.getParameterTypes().length == 0)
-                {
-                    System.out.println("Running " + m.getName());
-                    test.setUp();
-                    try
-                    {
-                        m.invoke(test);
-                    } catch (InvocationTargetException wrapperThrowable)
-                    {
-                        final Throwable th = wrapperThrowable.getCause();
-                        boolean exceptionFound = false;
-                        for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                        {
-                            if (expectedExClazz == th.getClass())
-                            {
-                                exceptionFound = true;
-                                break;
-                            }
-                        }
-                        if (exceptionFound == false)
-                        {
-                            throw th;
-                        }
-                    }
-                }
-                if (m.getParameterTypes().length == 2
-                        && "getOfs".equals(testAnnotation.dataProvider()))
-                {
-                    System.out.println("Running " + m.getName());
-                    test.setUp();
-                    try
-                    {
-                        final Object[][] testArgs = test.getOfs();
-                        for (Object[] a : testArgs)
-                        {
-                            System.out.println(" Arguments: " + Arrays.toString(a));
-                            m.invoke(test, a);
-                        }
-                    } catch (InvocationTargetException wrapperThrowable)
-                    {
-                        final Throwable th = wrapperThrowable.getCause();
-                        boolean exceptionFound = false;
-                        for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                        {
-                            if (expectedExClazz == th.getClass())
-                            {
-                                exceptionFound = true;
-                                break;
-                            }
-                        }
-                        if (exceptionFound == false)
-                        {
-                            throw th;
-                        }
-                    }
-                }
-            }
-            System.out.println("Tests OK!");
-        } finally
-        {
-            test.afterClass();
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeTaggedArrayTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeTaggedArrayTests.java
deleted file mode 100644
index 13b0115b979b66432736a9131e36e7b3242d25f8..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/convert/NativeTaggedArrayTests.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright 2010 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.convert;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-import ch.systemsx.cisd.base.convert.NativeData.ByteOrder;
-import ch.systemsx.cisd.base.mdarray.MDDoubleArray;
-import ch.systemsx.cisd.base.mdarray.MDFloatArray;
-import ch.systemsx.cisd.base.mdarray.MDIntArray;
-import ch.systemsx.cisd.base.mdarray.MDLongArray;
-import ch.systemsx.cisd.base.mdarray.MDShortArray;
-
-import static org.testng.AssertJUnit.*;
-
-/**
- * Test cases for {@link NativeTaggedArray}.
- * 
- * @author Bernd Rinn
- */
-public class NativeTaggedArrayTests
-{
-
-    @Test
-    public static void testFloat1DArrayNativeByteOrder()
-    {
-        final float[] floatArr = new float[]
-            { 1.1f, -3.2f, 1001.5f };
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(floatArr);
-        assertEquals(3 * 4 + 4 + 4, taggedArr.length);
-        final float[] convertedFloatArr = NativeTaggedArray.tryToFloatArray1D(taggedArr);
-        final NativeTaggedArray.NativeArrayTag tag = NativeTaggedArray.tryGetArrayTag(taggedArr);
-        final NativeArrayEncoding encoding = tag.getEncoding();
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertEquals(1, tag.getDimensions().length);
-        assertEquals(3, tag.getDimensions()[0]);
-        assertTrue(Arrays.equals(floatArr, convertedFloatArr));
-    }
-
-    @Test
-    public static void testFloat1DArrayNonNativeByteOrder()
-    {
-        final float[] floatArr = new float[]
-            { 1.1f, -3.2f, 1001.5f };
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(floatArr, nonNativeByteOrder);
-        assertEquals(3 * 4 + 4 + 4, taggedArr.length);
-        final float[] convertedFloatArr = NativeTaggedArray.tryToFloatArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(Arrays.equals(floatArr, convertedFloatArr));
-    }
-
-    @Test
-    public static void testFloat2DArrayNativeByteOrder()
-    {
-        final MDFloatArray floatArr = new MDFloatArray(new float[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(floatArr);
-        assertEquals(4 * 4 + 2 * 4 + 4, taggedArr.length);
-        final MDFloatArray convertedFloatArr = NativeTaggedArray.tryToFloatArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(floatArr.equals(convertedFloatArr));
-    }
-
-    @Test
-    public static void testFloat2DArrayNonNativeByteOrder()
-    {
-        final MDFloatArray floatArr = new MDFloatArray(new float[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final ByteOrder nonNativeByteOrder =
-            (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                    : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(floatArr, nonNativeByteOrder);
-        assertEquals(4 * 4 + 2 * 4 + 4, taggedArr.length);
-        final MDFloatArray convertedFloatArr = NativeTaggedArray.tryToFloatArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(floatArr.equals(convertedFloatArr));
-    }
-
-    @Test
-    public static void testDouble1DArrayNativeByteOrder()
-    {
-        final double[] doubleArr = new double[]
-            { 1.1, -3.2, 1001.5 };
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(doubleArr);
-        assertEquals(3 * 8 + 4 + 4, taggedArr.length);
-        final double[] convertedDoubleArr = NativeTaggedArray.tryToDoubleArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(Arrays.equals(doubleArr, convertedDoubleArr));
-    }
-
-    @Test
-    public static void testDouble1DArrayNonNativeByteOrder()
-    {
-        final double[] doubleArr = new double[]
-            { 1.1, -3.2, 1001.5 };
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(doubleArr, nonNativeByteOrder);
-        assertEquals(3 * 8 + 4 + 4, taggedArr.length);
-        final double[] convertedDoubleArr = NativeTaggedArray.tryToDoubleArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(Arrays.equals(doubleArr, convertedDoubleArr));
-    }
-
-    @Test
-    public static void testDouble2DArrayNativeByteOrder()
-    {
-        final MDDoubleArray doubleArr = new MDDoubleArray(new double[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(doubleArr);
-        assertEquals(4 * 8 + 2 * 4 + 4, taggedArr.length);
-        final MDDoubleArray convertedDoubleArr = NativeTaggedArray.tryToDoubleArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(doubleArr.equals(convertedDoubleArr));
-    }
-
-    @Test
-    public static void testDouble2DArrayNonNativeByteOrder()
-    {
-        final MDDoubleArray doubleArr = new MDDoubleArray(new double[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final ByteOrder nonNativeByteOrder =
-            (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                    : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(doubleArr, nonNativeByteOrder);
-        assertEquals(4 * 8 + 2 * 4 + 4, taggedArr.length);
-        final MDDoubleArray convertedDoubleArr = NativeTaggedArray.tryToDoubleArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertTrue(encoding.isFloatingPoint());
-        assertFalse(encoding.isInteger());
-        assertTrue(doubleArr.equals(convertedDoubleArr));
-    }
-
-    @Test
-    public static void testShort1DArrayNativeByteOrder()
-    {
-        final short[] shortArr = new short[]
-            { 1, -3, 1001 };
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(shortArr);
-        assertEquals(3 * 2 + 4 + 4, taggedArr.length);
-        final short[] convertedShortArr = NativeTaggedArray.tryToShortArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(2, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(shortArr, convertedShortArr));
-    }
-
-    @Test
-    public static void testShort1DArrayNonNativeByteOrder()
-    {
-        final short[] shortArr = new short[]
-            { 1, -3, 1001 };
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(shortArr, nonNativeByteOrder);
-        assertEquals(3 * 2 + 4 + 4, taggedArr.length);
-        final short[] convertedShortArr = NativeTaggedArray.tryToShortArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(2, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(shortArr, convertedShortArr));
-    }
-
-    @Test
-    public static void testShort2DArrayNativeByteOrder()
-    {
-        final MDShortArray shortArr = new MDShortArray(new short[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(shortArr);
-        assertEquals(4 * 2 + 2 * 4 + 4, taggedArr.length);
-        final MDShortArray convertedShortArr = NativeTaggedArray.tryToShortArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(2, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(shortArr.equals(convertedShortArr));
-    }
-
-    @Test
-    public static void testShort2DArrayNonNativeByteOrder()
-    {
-        final MDShortArray shortArr = new MDShortArray(new short[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final ByteOrder nonNativeByteOrder =
-            (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                    : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(shortArr, nonNativeByteOrder);
-        assertEquals(4 * 2 + 2 * 4 + 4, taggedArr.length);
-        final MDShortArray convertedShortArr = NativeTaggedArray.tryToShortArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(2, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(shortArr.equals(convertedShortArr));
-    }
-
-    @Test
-    public static void testInt1DArrayNativeByteOrder()
-    {
-        final int[] intArr = new int[]
-            { 1, -3, 1001 };
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(intArr);
-        assertEquals(3 * 4 + 4 + 4, taggedArr.length);
-        final int[] convertedIntArr = NativeTaggedArray.tryToIntArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(intArr, convertedIntArr));
-    }
-
-    @Test
-    public static void testInt1DArrayNonNativeByteOrder()
-    {
-        final int[] intArr = new int[]
-            { 1, -3, 1001 };
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(intArr, nonNativeByteOrder);
-        assertEquals(3 * 4 + 4 + 4, taggedArr.length);
-        final int[] convertedIntArr = NativeTaggedArray.tryToIntArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(intArr, convertedIntArr));
-    }
-
-    @Test
-    public static void testInt2DArrayNativeByteOrder()
-    {
-        final MDIntArray intArr = new MDIntArray(new int[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(intArr);
-        assertEquals(4 * 4 + 2 * 4 + 4, taggedArr.length);
-        final MDIntArray convertedIntArr = NativeTaggedArray.tryToIntArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(intArr.equals(convertedIntArr));
-    }
-
-    @Test
-    public static void testInt2DArrayNonNativeByteOrder()
-    {
-        final MDIntArray intArr = new MDIntArray(new int[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final ByteOrder nonNativeByteOrder =
-            (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                    : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(intArr, nonNativeByteOrder);
-        assertEquals(4 * 4 + 2 * 4 + 4, taggedArr.length);
-        final MDIntArray convertedIntArr = NativeTaggedArray.tryToIntArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(4, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(intArr.equals(convertedIntArr));
-    }
-
-    @Test
-    public static void testLong1DArrayNativeByteOrder()
-    {
-        final long[] longArr = new long[]
-            { 1, -3, 1001 };
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(longArr);
-        assertEquals(3 * 8 + 4 + 4, taggedArr.length);
-        final long[] convertedLongArr = NativeTaggedArray.tryToLongArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(longArr, convertedLongArr));
-    }
-
-    @Test
-    public static void testLong1DArrayNonNativeByteOrder()
-    {
-        final long[] longArr = new long[]
-            { 1, -3, 1001 };
-        final ByteOrder nonNativeByteOrder =
-                (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                        : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(longArr, nonNativeByteOrder);
-        assertEquals(3 * 8 + 4 + 4, taggedArr.length);
-        final long[] convertedLongArr = NativeTaggedArray.tryToLongArray1D(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(Arrays.equals(longArr, convertedLongArr));
-    }
-
-    @Test
-    public static void testLong2DArrayNativeByteOrder()
-    {
-        final MDLongArray longArr = new MDLongArray(new long[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(longArr);
-        assertEquals(4 * 8 + 2 * 4 + 4, taggedArr.length);
-        final MDLongArray convertedLongArr = NativeTaggedArray.tryToLongArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(NativeData.getNativeByteOrder(), encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(longArr.equals(convertedLongArr));
-    }
-
-    @Test
-    public static void testLong2DArrayNonNativeByteOrder()
-    {
-        final MDLongArray longArr = new MDLongArray(new long[]
-            { 1, 2, 3, 4 }, new int[] { 2, 2 });
-        final ByteOrder nonNativeByteOrder =
-            (NativeData.getNativeByteOrder() == ByteOrder.LITTLE_ENDIAN) ? ByteOrder.BIG_ENDIAN
-                    : ByteOrder.LITTLE_ENDIAN;
-        final byte[] taggedArr = NativeTaggedArray.toByteArray(longArr, nonNativeByteOrder);
-        assertEquals(4 * 8 + 2 * 4 + 4, taggedArr.length);
-        final MDLongArray convertedLongArr = NativeTaggedArray.tryToLongArray(taggedArr);
-        final NativeArrayEncoding encoding = NativeArrayEncoding.tryGetEncoding(taggedArr);
-        assertNotNull(encoding);
-        assertEquals(nonNativeByteOrder, encoding.getByteOrder());
-        assertEquals(8, encoding.getSizeInBytes());
-        assertFalse(encoding.isFloatingPoint());
-        assertTrue(encoding.isInteger());
-        assertTrue(longArr.equals(convertedLongArr));
-    }
-
-    private void afterClass()
-    {
-    }
-
-    private void setUp()
-    {
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + NativeTaggedArrayTests.class.getSimpleName());
-        System.out.println();
-        NativeData.ensureNativeLibIsLoaded();
-        final NativeTaggedArrayTests test = new NativeTaggedArrayTests();
-        try
-        {
-            for (Method m : NativeTaggedArrayTests.class.getMethods())
-            {
-                final Test testAnnotation = m.getAnnotation(Test.class);
-                if (testAnnotation == null || m.getParameterTypes().length > 0)
-                {
-                    continue;
-                }
-                System.out.println("Running " + m.getName());
-                test.setUp();
-                try
-                {
-                    m.invoke(test);
-                } catch (InvocationTargetException wrapperThrowable)
-                {
-                    final Throwable th = wrapperThrowable.getCause();
-                    boolean exceptionFound = false;
-                    for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                    {
-                        if (expectedExClazz == th.getClass())
-                        {
-                            exceptionFound = true;
-                            break;
-                        }
-                    }
-                    if (exceptionFound == false)
-                    {
-                        throw th;
-                    }
-                }
-            }
-            System.out.println("Tests OK!");
-        } finally
-        {
-            test.afterClass();
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnelTest.java b/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnelTest.java
deleted file mode 100644
index 04e34ebe933fde3ece17f97e7e38de91e2a40b92..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/CheckedExceptionTunnelTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2012 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.commons.lang.StringUtils;
-import org.testng.annotations.Test;
-
-import static org.testng.AssertJUnit.*;
-
-/**
- * Test cases for {@link CheckedExceptionTunnel}
- * 
- * @author Bernd Rinn
- */
-public class CheckedExceptionTunnelTest
-{
-
-    @Test
-    public void testGetMessage()
-    {
-        final IOException ioe = new IOException("This is the message");
-        final RuntimeException re = CheckedExceptionTunnel.wrapIfNecessary(ioe);
-        assertEquals("This is the message", re.getMessage());
-    }
-
-    @Test
-    public void testToString()
-    {
-        final InterruptedException ioe = new InterruptedException("Somehow got interrupted");
-        final RuntimeException re = CheckedExceptionTunnel.wrapIfNecessary(ioe);
-        assertEquals("java.lang.InterruptedException: Somehow got interrupted", re.toString());
-    }
-
-    @Test
-    public void testPrintStackTrace()
-    {
-        final InterruptedException ie = new InterruptedException("Somehow got interrupted");
-        ie.fillInStackTrace();
-        final RuntimeException re = CheckedExceptionTunnel.wrapIfNecessary(ie);
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        re.printStackTrace(pw);
-        final String[] lines = StringUtils.split(sw.toString(), '\n');
-        assertEquals("java.lang.InterruptedException: Somehow got interrupted", lines[0]);
-        assertTrue(
-                lines[1],
-                lines[1].startsWith("\tat ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnelTest."
-                        + "testPrintStackTrace(CheckedExceptionTunnelTest.java"));
-    }
-
-    @Test
-    public void testPrintFullStackTrace()
-    {
-        final Exception e = new Exception("Some exceptional condition");
-        e.fillInStackTrace();
-        final CheckedExceptionTunnel re = new CheckedExceptionTunnel(e);
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        re.printFullStackTrace();
-        re.printFullStackTrace(pw);
-        final String[] lines = StringUtils.split(sw.toString(), '\n');
-        assertEquals(
-                "ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel: Some exceptional condition",
-                lines[0]);
-        assertTrue(
-                lines[1],
-                lines[1].startsWith("\tat ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnelTest."
-                        + "testPrintFullStackTrace(CheckedExceptionTunnelTest.java:"));
-    }
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/IOExceptionUncheckedTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/IOExceptionUncheckedTests.java
deleted file mode 100644
index 76db02d4909760a6119a2dc2d87228c4038454b3..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/exceptions/IOExceptionUncheckedTests.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.exceptions;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
-import static org.testng.AssertJUnit.assertNull;
-import static org.testng.AssertJUnit.assertTrue;
-import static org.testng.AssertJUnit.fail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
-
-/**
- * Test cases for {@link IOExceptionUnchecked}.
- *
- * @author Bernd Rinn
- */
-public class IOExceptionUncheckedTests
-{
-    private void generateFileNotFoundException() throws IOExceptionUnchecked
-    {
-        try
-        {
-            new FileInputStream(new File("doesnt.exist"));
-        } catch (IOException ex)
-        {
-            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-        }
-    }
-    
-    @Test
-    public void testWrapUnwrapIOException()
-    {
-        try
-        {
-            generateFileNotFoundException();
-            fail("No IOException thrown");
-        } catch (IOExceptionUnchecked e)
-        {
-            final Exception ex = CheckedExceptionTunnel.unwrapIfNecessary(e);
-            assertTrue(ex instanceof FileNotFoundException);
-            assertTrue(ex.getMessage().startsWith("doesnt.exist"));
-        }
-    }
-    
-    @Test
-    public void testWrapUnwrapNonIOException()
-    {
-        try
-        {
-            throw new IOExceptionUnchecked(new IllegalStateException("Don't like this state"));
-        } catch (CheckedExceptionTunnel e)
-        {
-            final Exception ex = CheckedExceptionTunnel.unwrapIfNecessary(e);
-            assertTrue(ex instanceof IOException);
-            assertEquals("IllegalStateException: Don't like this state", ex.getMessage());
-            assertNotNull(ex.getCause());
-            assertTrue(ex.getCause() instanceof IllegalStateException);
-            assertEquals("Don't like this state", ex.getCause().getMessage());
-        }
-    }
-
-    @Test
-    public void testWrapUnwrapIOExceptionGivingMsg()
-    {
-        try
-        {
-            throw new IOExceptionUnchecked("Some message");
-        } catch (CheckedExceptionTunnel e)
-        {
-            final Exception ex = CheckedExceptionTunnel.unwrapIfNecessary(e);
-            assertTrue(ex instanceof IOException);
-            assertEquals("Some message", ex.getMessage());
-            assertNull(ex.getCause());
-        }
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + IOExceptionUncheckedTests.class.getSimpleName());
-        System.out.println();
-        final IOExceptionUncheckedTests test = new IOExceptionUncheckedTests();
-        for (Method m : IOExceptionUncheckedTests.class.getMethods())
-        {
-            final Test testAnnotation = m.getAnnotation(Test.class);
-            if (testAnnotation == null)
-            {
-                continue;
-            }
-            if (m.getParameterTypes().length == 0)
-            {
-                System.out.println("Running " + m.getName());
-                try
-                {
-                    m.invoke(test);
-                } catch (InvocationTargetException wrapperThrowable)
-                {
-                    final Throwable th = wrapperThrowable.getCause();
-                    boolean exceptionFound = false;
-                    for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                    {
-                        if (expectedExClazz == th.getClass())
-                        {
-                            exceptionFound = true;
-                            break;
-                        }
-                    }
-                    if (exceptionFound == false)
-                    {
-                        throw th;
-                    }
-                }
-            }
-        }
-        System.out.println("Tests OK!");
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFileTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFileTests.java
deleted file mode 100644
index 0987c3474fae2f85ba536fd3664c94472cdff1ff..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/io/ByteBufferRandomAccessFileTests.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-
-/**
- * Test cases for {@link RandomAccessFileImpl}.
- *
- * @author Bernd Rinn
- */
-public class ByteBufferRandomAccessFileTests extends IRandomAccessFileTests
-{
-
-    @Override
-    protected IRandomAccessFile createRandomAccessFile(String name)
-    {
-        return new ByteBufferRandomAccessFile(4096);
-    }
-
-    @Override
-    protected IRandomAccessFile createRandomAccessFile(String name, byte[] content)
-    {
-        return new ByteBufferRandomAccessFile(content);
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + ByteBufferRandomAccessFileTests.class.getSimpleName());
-        System.out.println();
-        final ByteBufferRandomAccessFileTests test = new ByteBufferRandomAccessFileTests();
-        try
-        {
-            for (Method m : ByteBufferRandomAccessFileTests.class.getMethods())
-            {
-                final Test testAnnotation = m.getAnnotation(Test.class);
-                if (testAnnotation == null)
-                {
-                    continue;
-                }
-                if (m.getParameterTypes().length == 0)
-                {
-                    System.out.println("Running " + m.getName());
-                    test.setUp();
-                    try
-                    {
-                        m.invoke(test);
-                    } catch (InvocationTargetException wrapperThrowable)
-                    {
-                        final Throwable th = wrapperThrowable.getCause();
-                        boolean exceptionFound = false;
-                        for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                        {
-                            if (expectedExClazz == th.getClass())
-                            {
-                                exceptionFound = true;
-                                break;
-                            }
-                        }
-                        if (exceptionFound == false)
-                        {
-                            throw th;
-                        }
-                    }
-                }
-            }
-            System.out.println("Tests OK!");
-        } finally
-        {
-            test.afterClass();
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/io/IRandomAccessFileTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/io/IRandomAccessFileTests.java
deleted file mode 100644
index 57ddec176d4b476a81fbdd1418c7a80317bb48a4..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/io/IRandomAccessFileTests.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.io.IOException;
-import java.nio.ByteOrder;
-
-import org.apache.commons.io.IOUtils;
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.convert.NativeData;
-import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
-
-/**
- * Test cases for {@link IRandomAccessFile} implementations.
- * 
- * @author Bernd Rinn
- */
-public abstract class IRandomAccessFileTests extends AbstractFileSystemTestCase
-{
-
-    abstract protected IRandomAccessFile createRandomAccessFile(String name);
-
-    abstract protected IRandomAccessFile createRandomAccessFile(String name, byte[] content);
-
-    @Test
-    public void testSkip()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testSkip");
-        final byte[] b = new byte[4096];
-        for (int i = 0; i < b.length; ++i)
-        {
-            b[i] = (byte) i;
-        }
-        raf.write(b);
-        raf.seek(0);
-        assertEquals(509, raf.skip(509));
-        assertEquals(509, raf.getFilePointer());
-        assertEquals(-3, raf.readByte());
-        assertEquals(4096 - 509 - 1, raf.skip(4096));
-        assertEquals(4096, raf.getFilePointer());
-        raf.close();
-    }
-
-    @Test
-    public void testLongByteOrder()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testLongByteOrder");
-        raf.writeLong(1);
-        final byte[] buf = new byte[8];
-        raf.seek(0);
-        raf.read(buf);
-        // Default is big endian
-        assertEquals(0, buf[0]);
-        assertEquals(1, buf[7]);
-
-        raf.seek(0);
-        raf.setByteOrder(ByteOrder.LITTLE_ENDIAN);
-        raf.writeLong(1);
-        raf.seek(0);
-        raf.read(buf);
-        assertEquals(1, buf[0]);
-        assertEquals(0, buf[7]);
-        raf.close();
-    }
-
-    @Test
-    public void testMark()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testMark");
-        final byte[] buf = new byte[128];
-        raf.write(buf);
-        raf.seek(0);
-        assertTrue(raf.markSupported());
-        raf.mark(0);
-        raf.read();
-        assertEquals(1, raf.getFilePointer());
-        raf.reset();
-        assertEquals(0, raf.getFilePointer());
-        raf.read();
-        raf.read();
-        raf.read();
-        raf.mark(0);
-        raf.read();
-        raf.read();
-        raf.read();
-        raf.reset();
-        assertEquals(3, raf.getFilePointer());
-        raf.close();
-    }
-
-    @Test
-    public void testWriteReadByte()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadByte");
-        raf.write(254);
-        raf.seek(0);
-        assertEquals(-2, raf.readByte());
-        raf.seek(0);
-        assertEquals(254, raf.read());
-        raf.seek(0);
-        assertEquals(254, raf.readUnsignedByte());
-        raf.close();
-    }
-
-    @Test
-    public void testWriteReadShort()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadShort");
-        raf.writeShort(65534);
-        raf.seek(0);
-        assertEquals(-2, raf.readShort());
-        raf.seek(0);
-        assertEquals(65534, raf.readUnsignedShort());
-        raf.close();
-    }
-
-    @Test
-    public void testAvailable()
-    {
-        final IRandomAccessFile raf = createRandomAccessFile("testAvailable");
-        assertEquals(0, raf.available());
-        raf.writeDouble(5.5);
-        raf.seek(0);
-        assertEquals(8, raf.available());
-        raf.close();
-    }
-
-    @Test
-    public void testWriteReadStringBytes()
-    {
-        final String s = "teststring";
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadStringBytes");
-        raf.writeBytes(s);
-        raf.seek(0);
-        assertEquals(s.length(), raf.available());
-        final byte[] buf = new byte[raf.available()];
-        raf.read(buf);
-        assertEquals(s, new String(buf));
-        raf.close();
-    }
-
-    @Test
-    public void testWriteReadStringChars()
-    {
-        final String s = "teststring";
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadStringChars");
-        raf.writeChars(s);
-        raf.seek(0);
-        assertEquals(2 * s.length(), raf.available());
-        final byte[] buf = new byte[raf.available()];
-        raf.read(buf);
-        assertEquals(
-                s,
-                new String(NativeData.byteToChar(buf,
-                        ch.systemsx.cisd.base.convert.NativeData.ByteOrder.BIG_ENDIAN)));
-        raf.close();
-    }
-
-    @Test
-    public void testReadLine() throws IOException
-    {
-        final byte[] bytes = "hello world".getBytes();
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadStringChars", bytes);
-        final AdapterIInputStreamToInputStream is = new AdapterIInputStreamToInputStream(raf);
-
-        assertEquals("[hello world]", IOUtils.readLines(is).toString());
-        raf.close();
-    }
-
-    @Test
-    public void testToByteArray() throws IOException
-    {
-        final byte[] bytes = "hello world".getBytes();
-        final IRandomAccessFile raf = createRandomAccessFile("testWriteReadStringChars", bytes);
-        final AdapterIInputStreamToInputStream is = new AdapterIInputStreamToInputStream(raf);
-
-        assertEquals(bytes, IOUtils.toByteArray(is));
-        raf.close();
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/io/RandomAccessFileImplTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/io/RandomAccessFileImplTests.java
deleted file mode 100644
index 2bc200b3d2c300e34b7d78f01da47263229ef09d..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/io/RandomAccessFileImplTests.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2011 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.io;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-
-/**
- * Test cases for {@link RandomAccessFileImpl}.
- *
- * @author Bernd Rinn
- */
-public class RandomAccessFileImplTests extends IRandomAccessFileTests
-{
-
-    @Override
-    protected IRandomAccessFile createRandomAccessFile(String name)
-    {
-        return new RandomAccessFileImpl(create(name), "rw");
-    }
-
-    @Override
-    protected IRandomAccessFile createRandomAccessFile(String name, byte[] content)
-    {
-        final IRandomAccessFile f = new RandomAccessFileImpl(create(name), "rw");
-        f.write(content);
-        f.seek(0L);
-        return f;
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + RandomAccessFileImplTests.class.getSimpleName());
-        System.out.println();
-        final RandomAccessFileImplTests test = new RandomAccessFileImplTests();
-        try
-        {
-            for (Method m : RandomAccessFileImplTests.class.getMethods())
-            {
-                final Test testAnnotation = m.getAnnotation(Test.class);
-                if (testAnnotation == null)
-                {
-                    continue;
-                }
-                if (m.getParameterTypes().length == 0)
-                {
-                    System.out.println("Running " + m.getName());
-                    test.setUp();
-                    try
-                    {
-                        m.invoke(test);
-                    } catch (InvocationTargetException wrapperThrowable)
-                    {
-                        final Throwable th = wrapperThrowable.getCause();
-                        boolean exceptionFound = false;
-                        for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                        {
-                            if (expectedExClazz == th.getClass())
-                            {
-                                exceptionFound = true;
-                                break;
-                            }
-                        }
-                        if (exceptionFound == false)
-                        {
-                            throw th;
-                        }
-                    }
-                }
-            }
-            System.out.println("Tests OK!");
-        } finally
-        {
-            test.afterClass();
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/mdarray/MDArrayTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/mdarray/MDArrayTests.java
deleted file mode 100644
index 38a918209660b43add73f25952dcf0fcff182c65..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/mdarray/MDArrayTests.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.mdarray;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertTrue;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-
-/**
- * Test cases for {@link MDAbstractArray}.
- * 
- * @author Bernd Rinn
- */
-public class MDArrayTests
-{
-    @Test
-    public void testGetLength()
-    {
-        assertEquals(0, MDAbstractArray.getLength(new int[]
-            { 0 }, 0));
-        assertEquals(1, MDAbstractArray.getLength(new int[]
-            { 1 }, 0));
-        assertEquals(2, MDAbstractArray.getLength(new int[]
-            { 1 }, 2));
-        assertEquals(15, MDAbstractArray.getLength(new int[]
-            { 5, 3 }, 0));
-        assertEquals(21, MDAbstractArray.getLength(new int[]
-            { 5, 3 }, 7));
-        assertEquals(15, MDAbstractArray.getLength(new int[]
-            { 5, 3 }, 3));
-        assertEquals(1, MDAbstractArray.getLength(new int[]
-            { 1, 1, 1 }, 0));
-        assertEquals(3, MDAbstractArray.getLength(new int[]
-            { 1, 1, 1 }, 3));
-        assertEquals(8, MDAbstractArray.getLength(new int[]
-            { 2, 2, 2 }, 0));
-        assertEquals(20, MDAbstractArray.getLength(new int[]
-            { 2, 2, 2 }, 5));
-        assertEquals(2, MDAbstractArray.getLength(new int[]
-            { 1, 1, 2 }, 0));
-        assertEquals(2, MDAbstractArray.getLength(new int[]
-            { 1, 2, 1 }, 0));
-        assertEquals(2, MDAbstractArray.getLength(new int[]
-            { 2, 1, 1 }, 0));
-        assertEquals(50, MDAbstractArray.getLength(new int[]
-            { 10, 1, 5 }, 0));
-        assertEquals(50, MDAbstractArray.getLength(new long[]
-            { 10, 1, 5 }, 0));
-    }
-
-    @Test
-    public void testToInt()
-    {
-        assertTrue(Arrays.equals(new int[]
-            { 1, 2, 3 }, MDAbstractArray.toInt(new long[]
-            { 1, 2, 3 })));
-        assertTrue(Arrays.equals(new int[] {}, MDAbstractArray.toInt(new long[] {})));
-    }
-
-    @Test
-    public void testComputeIndex()
-    {
-        MDArray<Object> array;
-        array = new MDArray<Object>(Object.class, new int[]
-            { 33 });
-        assertEquals(17, array.computeIndex(new int[]
-            { 17 }));
-        assertTrue(Arrays.toString(array.computeReverseIndex(17)), Arrays.equals(new int[]
-            { 17 }, array.computeReverseIndex(17)));
-        array = new MDArray<Object>(Object.class, new int[]
-            { 100, 10 });
-        assertEquals(10 * 42 + 8, array.computeIndex(new int[]
-            { 42, 8 }));
-        assertTrue(Arrays.toString(array.computeReverseIndex(10 * 42 + 8)),
-                Arrays.equals(new int[]
-                    { 42, 8 }, array.computeReverseIndex(10 * 42 + 8)));
-        array = new MDArray<Object>(Object.class, new int[]
-            { 2, 7, 3 });
-        assertEquals(3 * 7 * 1 + 3 * 3 + 2, array.computeIndex(new int[]
-            { 1, 3, 2 }));
-        assertTrue(Arrays.toString(array.computeReverseIndex(3 * 7 * 1 + 3 * 3 + 2)),
-                Arrays.equals(new int[]
-                    { 1, 3, 2 }, array.computeReverseIndex(3 * 7 * 1 + 3 * 3 + 2)));
-    }
-
-    @Test
-    public void testComputeIndex2D()
-    {
-        MDArray<Object> array;
-        array = new MDArray<Object>(Object.class, new int[]
-            { 100, 10 });
-        assertEquals(array.computeIndex(new int[]
-            { 5, 8, }), array.computeIndex(5, 8));
-        assertEquals(array.computeIndex(new int[]
-            { 9, 1, }), array.computeIndex(9, 1));
-        array = new MDArray<Object>(Object.class, new int[]
-            { 101, 11 });
-        assertEquals(array.computeIndex(new int[]
-            { 5, 8, }), array.computeIndex(5, 8));
-        assertEquals(array.computeIndex(new int[]
-            { 9, 1, }), array.computeIndex(9, 1));
-    }
-
-    @Test
-    public void testComputeIndex3()
-    {
-        MDArray<Object> array;
-        array = new MDArray<Object>(Object.class, new int[]
-            { 100, 10, 17 });
-        assertEquals(array.computeIndex(new int[]
-            { 5, 8, 16 }), array.computeIndex(5, 8, 16));
-        assertEquals(array.computeIndex(new int[]
-            { 9, 1, 5 }), array.computeIndex(9, 1, 5));
-        array = new MDArray<Object>(Object.class, new int[]
-            { 101, 11, 3 });
-        assertEquals(array.computeIndex(new int[]
-            { 5, 8, 0 }), array.computeIndex(5, 8, 0));
-        assertEquals(array.computeIndex(new int[]
-            { 9, 1, 2 }), array.computeIndex(9, 1, 2));
-    }
-
-    @Test
-    public void testEmptyMatrix()
-    {
-        final MDFloatArray arr = new MDFloatArray(new float[0][0]);
-        assertEquals(0, arr.dimensions()[0]);
-        assertEquals(0, arr.dimensions()[1]);
-    }
-
-    @Test
-    public void testChangeHyperRowCountIntArray()
-    {
-        final MDIntArray arr = new MDIntArray(new int[]
-            { 2, 2 }, 3);
-        assertEquals(2, arr.dimensions[0]);
-        assertEquals(2, arr.dimensions[1]);
-        arr.set(1, 0, 0);
-        arr.set(2, 0, 1);
-        arr.set(3, 1, 0);
-        arr.set(4, 1, 1);
-
-        final MDIntArray arr2 = new MDIntArray(arr.getCopyAsFlatArray(), arr.dimensions());
-        assertTrue(arr2.equals(arr));
-
-        arr.incNumberOfHyperRows(1);
-        assertEquals(3, arr.dimensions[0]);
-        assertEquals(1, arr.get(0, 0));
-        assertEquals(2, arr.get(0, 1));
-        assertEquals(3, arr.get(1, 0));
-        assertEquals(4, arr.get(1, 1));
-        arr.set(5, 2, 0);
-        arr.set(6, 2, 1);
-        arr.incNumberOfHyperRows(2);
-        assertEquals(5, arr.dimensions[0]);
-        assertEquals(1, arr.get(0, 0));
-        assertEquals(2, arr.get(0, 1));
-        assertEquals(3, arr.get(1, 0));
-        assertEquals(4, arr.get(1, 1));
-        assertEquals(5, arr.get(2, 0));
-        assertEquals(6, arr.get(2, 1));
-        arr.set(7, 3, 0);
-        arr.set(8, 3, 1);
-        arr.decNumberOfHyperRows(1);
-        assertEquals(4, arr.dimensions[0]);
-        assertEquals(1, arr.get(0, 0));
-        assertEquals(2, arr.get(0, 1));
-        assertEquals(3, arr.get(1, 0));
-        assertEquals(4, arr.get(1, 1));
-        assertEquals(5, arr.get(2, 0));
-        assertEquals(6, arr.get(2, 1));
-        assertEquals(7, arr.get(3, 0));
-        assertEquals(8, arr.get(3, 1));
-    }
-
-    @Test
-    public void testChangeHyperRowCountIntArrayFromZero()
-    {
-        final MDIntArray arr = new MDIntArray(new int[]
-            { 0 });
-        assertEquals(0, arr.size(0));
-        arr.incNumberOfHyperRows(1);
-        assertEquals(1, arr.size(0));
-        arr.set(17, 0);
-        assertEquals(17, arr.get(0));
-        arr.incNumberOfHyperRows(1);
-        arr.incNumberOfHyperRows(1);
-        assertEquals(3, arr.size());
-    }
-
-    @Test
-    public void testChangeHyperRowCountTArray()
-    {
-        final MDArray<Integer> arr = new MDArray<Integer>(Integer.class, new int[]
-            { 2, 2 }, 3);
-        assertEquals(2, arr.dimensions[0]);
-        assertEquals(2, arr.dimensions[1]);
-        arr.set(1, 0, 0);
-        arr.set(2, 0, 1);
-        arr.set(3, 1, 0);
-        arr.set(4, 1, 1);
-        arr.incNumberOfHyperRows(1);
-        assertEquals(3, arr.dimensions[0]);
-        assertEquals(1, (int) arr.get(0, 0));
-        assertEquals(2, (int) arr.get(0, 1));
-        assertEquals(3, (int) arr.get(1, 0));
-        assertEquals(4, (int) arr.get(1, 1));
-        arr.set(5, 2, 0);
-        arr.set(6, 2, 1);
-        arr.incNumberOfHyperRows(2);
-        assertEquals(5, arr.dimensions[0]);
-        assertEquals(1, (int) arr.get(0, 0));
-        assertEquals(2, (int) arr.get(0, 1));
-        assertEquals(3, (int) arr.get(1, 0));
-        assertEquals(4, (int) arr.get(1, 1));
-        assertEquals(5, (int) arr.get(2, 0));
-        assertEquals(6, (int) arr.get(2, 1));
-        arr.set(7, 3, 0);
-        arr.set(8, 3, 1);
-        arr.decNumberOfHyperRows(1);
-        assertEquals(4, arr.dimensions[0]);
-        assertEquals(1, (int) arr.get(0, 0));
-        assertEquals(2, (int) arr.get(0, 1));
-        assertEquals(3, (int) arr.get(1, 0));
-        assertEquals(4, (int) arr.get(1, 1));
-        assertEquals(5, (int) arr.get(2, 0));
-        assertEquals(6, (int) arr.get(2, 1));
-        assertEquals(7, (int) arr.get(3, 0));
-        assertEquals(8, (int) arr.get(3, 1));
-    }
-
-    @Test
-    public void testMDIntArrayIterator()
-    {
-        final int[] linArray = new int[120];
-        for (int i = 0; i < linArray.length; ++i)
-        {
-            linArray[i] = i;
-        }
-        final MDIntArray array = new MDIntArray(linArray, new int[]
-            { 2, 3, 4, 5 });
-        for (MDIntArray.ArrayEntry e : array)
-        {
-            assertEquals(e.getLinearIndex(), e.getValue().intValue());
-            assertEquals(e.getLinearIndex(), array.computeIndex(e.getIndex()));
-        }
-    }
-
-    @Test
-    public void testMDFloatArrayMatrix()
-    {
-        final float[][] matrix1 = new float[][]
-            {
-                { 1f, 2f, 3f, 4f },
-                { 5f, 6f, 7f, 8f },
-                { 9f, 10f, 11f, 12f } };
-        final MDFloatArray array = new MDFloatArray(matrix1);
-        assertEquals(2, array.rank());
-        assertEquals(12, array.size());
-        assertEquals(3, array.size(0));
-        assertEquals(4, array.size(1));
-        assertEquals(7f, array.get(1, 2));
-        final float[][] matrix2 = array.toMatrix();
-        assertEquals(matrix1.length, matrix2.length);
-        for (int i = 0; i < matrix1.length; ++i)
-        {
-            assertTrue(Arrays.equals(matrix1[i], matrix2[i]));
-        }
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + MDArrayTests.class.getSimpleName());
-        System.out.println();
-        final MDArrayTests test = new MDArrayTests();
-        for (Method m : MDArrayTests.class.getMethods())
-        {
-            final Test testAnnotation = m.getAnnotation(Test.class);
-            if (testAnnotation == null)
-            {
-                continue;
-            }
-            if (m.getParameterTypes().length == 0)
-            {
-                System.out.println("Running " + m.getName());
-                try
-                {
-                    m.invoke(test);
-                } catch (InvocationTargetException wrapperThrowable)
-                {
-                    final Throwable th = wrapperThrowable.getCause();
-                    boolean exceptionFound = false;
-                    for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                    {
-                        if (expectedExClazz == th.getClass())
-                        {
-                            exceptionFound = true;
-                            break;
-                        }
-                    }
-                    if (exceptionFound == false)
-                    {
-                        throw th;
-                    }
-                }
-            }
-        }
-        System.out.println("Tests OK!");
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutorTest.java b/base/sourceTest/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutorTest.java
deleted file mode 100644
index 582a02aebccb10bb73f911c6391d7e0f1d9ee638..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/namedthread/NamingThreadPoolExecutorTest.java
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.namedthread;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertFalse;
-import static org.testng.AssertJUnit.assertTrue;
-import static org.testng.AssertJUnit.fail;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.testng.annotations.Test;
-
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-import ch.systemsx.cisd.base.tests.Retry10;
-
-/**
- * Test cases for the {@link NamingThreadPoolExecutor}.
- * 
- * @author Bernd Rinn
- */
-public class NamingThreadPoolExecutorTest
-{
-
-    private final static String name = "This is the pool name";
-
-    @Test
-    public void testNamedPool() throws Throwable
-    {
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(2).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(2, eservice.getMaximumPoolSize());
-        final Future<?> future = eservice.submit(new Runnable()
-            {
-                @Override
-                public void run()
-                {
-                    assertEquals(name + "-T1", Thread.currentThread().getName());
-                }
-            });
-        try
-        {
-            future.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Test
-    public void testDaemonize()
-    {
-        final NamingThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(2);
-        assertFalse(eservice.getThreadFactory().isCreateDaemonThreads());
-        eservice.daemonize();
-        assertTrue(eservice.getThreadFactory().isCreateDaemonThreads());
-    }
-
-    @Test
-    public void testSetNamedThreadFactory()
-    {
-        final NamingThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(2).daemonize();
-        final NamingThreadFactory factory = new NamingThreadFactory("name");
-        eservice.setThreadFactory(factory);
-        assertEquals(factory, eservice.getThreadFactory());
-    }
-
-    @Test
-    public void testSetThreadFactory()
-    {
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(2).daemonize();
-        final ThreadFactory factory = new NamingThreadFactory("name");
-        eservice.setThreadFactory(factory);
-        assertEquals(factory, eservice.getThreadFactory());
-    }
-
-    @Test(expectedExceptions = IllegalArgumentException.class)
-    public void testSetThreadFactoryFailed()
-    {
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(2).daemonize();
-        final ThreadFactory factory = new ThreadFactory()
-            {
-                @Override
-                public Thread newThread(Runnable r)
-                {
-                    return null; // Doesn't matter, never used
-                }
-            };
-        // It needs to be NamingThreadFactory, thus it will throw an IllegalArgumentException.
-        eservice.setThreadFactory(factory);
-    }
-
-    @Test(groups = "slow")
-    public void testThreadDefaultNames() throws Throwable
-    {
-        final int max = 10;
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(max).maximumPoolSize(max).daemonize();
-        assertEquals(max, eservice.getCorePoolSize());
-        assertEquals(max, eservice.getMaximumPoolSize());
-        final Set<String> expectedThreadNameSet = new HashSet<String>();
-        for (int i = 1; i <= max; ++i)
-        {
-            expectedThreadNameSet.add(name + "-T" + i);
-        }
-        final Set<String> threadNameSet = Collections.synchronizedSet(new HashSet<String>());
-        final Set<Future<?>> futureSet = new HashSet<Future<?>>();
-        for (int i = 0; i < max; ++i)
-        {
-            futureSet.add(eservice.submit(new Runnable()
-                {
-                    @Override
-                    public void run()
-                    {
-                        threadNameSet.add(Thread.currentThread().getName());
-                        try
-                        {
-                            Thread.sleep(20L);
-                        } catch (InterruptedException ex)
-                        {
-                            fail("We got interrupted.");
-                        }
-                    }
-                }));
-        }
-        for (Future<?> future : futureSet)
-        {
-            try
-            {
-                future.get(400L, TimeUnit.MILLISECONDS);
-            } catch (ExecutionException ex)
-            {
-                throw ex.getCause();
-            }
-        }
-        assertEquals(expectedThreadNameSet, threadNameSet);
-    }
-
-    @Test(groups = "slow")
-    public void testSubmitNamedRunnable() throws Throwable
-    {
-        final String runnableName = "This is the special runnable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Future<?> future = eservice.submit(new NamedRunnable()
-            {
-                @Override
-                public void run()
-                {
-                    assertEquals(name + "-T1::" + runnableName, Thread.currentThread().getName());
-                }
-
-                @Override
-                public String getRunnableName()
-                {
-                    return runnableName;
-                }
-            });
-        try
-        {
-            future.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Test(groups = "slow")
-    public void testExecuteNamedRunnable() throws Throwable
-    {
-        final String runnableName = "This is the special runnable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Semaphore sem = new Semaphore(0);
-        eservice.execute(new NamedRunnable()
-            {
-                @Override
-                public void run()
-                {
-                    assertEquals(name + "-T1::" + runnableName, Thread.currentThread().getName());
-                    sem.release();
-                }
-
-                @Override
-                public String getRunnableName()
-                {
-                    return runnableName;
-                }
-            });
-        assertTrue(sem.tryAcquire(200L, TimeUnit.MILLISECONDS));
-    }
-
-    interface MyRunnable extends Runnable, IRunnableNameProvider
-    {
-    }
-    
-    @Test(groups = "slow")
-    public void testExecuteNamedMyRunnable() throws Throwable
-    {
-        final String runnableName = "This is the special runnable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Semaphore sem = new Semaphore(0);
-        eservice.execute(new MyRunnable()
-            {
-                @Override
-                public void run()
-                {
-                    assertEquals(name + "-T1::" + runnableName, Thread.currentThread().getName());
-                    sem.release();
-                }
-
-                @Override
-                public String getRunnableName()
-                {
-                    return runnableName;
-                }
-            });
-        assertTrue(sem.tryAcquire(200L, TimeUnit.MILLISECONDS));
-    }
-
-    @Test(groups = "slow")
-    public void testSubmitNamedCallable() throws Throwable
-    {
-        final String callableName = "This is the special callable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Future<?> future = eservice.submit(new NamedCallable<Object>()
-            {
-                @Override
-                public Object call() throws Exception
-                {
-                    assertEquals(name + "-T1::" + callableName, Thread.currentThread().getName());
-                    return null;
-                }
-
-                @Override
-                public String getCallableName()
-                {
-                    return callableName;
-                }
-            });
-        try
-        {
-            future.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    interface MyCallable extends Callable<Object>, ICallableNameProvider
-    {
-    }
-    
-    @Test(groups = "slow")
-    public void testSubmitMyNamedCallable() throws Throwable
-    {
-        final String callableName = "This is the special callable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Future<?> future = eservice.submit(new MyCallable()
-            {
-                @Override
-                public Object call() throws Exception
-                {
-                    assertEquals(name + "-T1::" + callableName, Thread.currentThread().getName());
-                    return null;
-                }
-
-                @Override
-                public String getCallableName()
-                {
-                    return callableName;
-                }
-            });
-        try
-        {
-            future.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    @Test(groups = "slow", retryAnalyzer = Retry10.class)
-    public void testSubmitNamedCallables() throws Throwable
-    {
-        final String callableName1 = "This is the first special callable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Future<?> future1 = eservice.submit(new NamedCallable<Object>()
-            {
-                @Override
-                public Object call() throws Exception
-                {
-                    assertEquals(name + "-T1::" + callableName1, Thread.currentThread().getName());
-                    return null;
-                }
-
-                @Override
-                public String getCallableName()
-                {
-                    return callableName1;
-                }
-            });
-        try
-        {
-            future1.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-        // On Linux x64, Java 1.6 we get a RejectedExecutionException if we continue immediately.
-        Thread.sleep(200L);
-        final String callableName2 = "This is the second special callable name";
-        final Future<?> future2 = eservice.submit(new NamedCallable<Object>()
-            {
-                @Override
-                public Object call() throws Exception
-                {
-                    assertEquals(name + "-T1::" + callableName2, Thread.currentThread().getName());
-                    return null;
-                }
-
-                @Override
-                public String getCallableName()
-                {
-                    return callableName2;
-                }
-            });
-        try
-        {
-            future2.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-
-    @Test(groups = "slow", retryAnalyzer = Retry10.class)
-    public void testSubmitQueuedNamedCallables() throws Throwable
-    {
-        final String callableName1 = "This is the first special callable name";
-        final ThreadPoolExecutor eservice =
-                new NamingThreadPoolExecutor(name, 1).corePoolSize(1).maximumPoolSize(1).daemonize();
-        assertEquals(1, eservice.getCorePoolSize());
-        assertEquals(1, eservice.getMaximumPoolSize());
-        final Future<?> future1 = eservice.submit(new NamedCallable<Object>()
-            {
-                @Override
-                public Object call() throws Exception
-                {
-                    assertEquals(name + "-T1::" + callableName1, Thread.currentThread().getName());
-                    Thread.sleep(100L);
-                    return null;
-                }
-
-                @Override
-                public String getCallableName()
-                {
-                    return callableName1;
-                }
-            });
-        final Future<?> future2 = eservice.submit(new NamedCallable<Object>()
-                {
-                    @Override
-                    public Object call() throws Exception
-                    {
-                        assertEquals(name + "-T1::" + callableName1, Thread.currentThread().getName());
-                        Thread.sleep(100L);
-                        return null;
-                    }
-
-                    @Override
-                    public String getCallableName()
-                    {
-                        return callableName1;
-                    }
-                });
-        try
-        {
-            future1.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-        try
-        {
-            future2.get(200L, TimeUnit.MILLISECONDS);
-        } catch (ExecutionException ex)
-        {
-            throw ex.getCause();
-        }
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + NamingThreadPoolExecutorTest.class.getSimpleName());
-        System.out.println();
-        final NamingThreadPoolExecutorTest test = new NamingThreadPoolExecutorTest();
-        for (Method m : NamingThreadPoolExecutorTest.class.getMethods())
-        {
-            final Test testAnnotation = m.getAnnotation(Test.class);
-            if (testAnnotation == null)
-            {
-                continue;
-            }
-            if (m.getParameterTypes().length == 0)
-            {
-                System.out.println("Running " + m.getName());
-                try
-                {
-                    m.invoke(test);
-                } catch (InvocationTargetException wrapperThrowable)
-                {
-                    final Throwable th = wrapperThrowable.getCause();
-                    boolean exceptionFound = false;
-                    for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                    {
-                        if (expectedExClazz == th.getClass())
-                        {
-                            exceptionFound = true;
-                            break;
-                        }
-                    }
-                    if (exceptionFound == false)
-                    {
-                        throw th;
-                    }
-                }
-            }
-        }
-        System.out.println("Tests OK!");
-    }
-
-}
diff --git a/base/sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java b/base/sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java
deleted file mode 100644
index 33714885700ddbd3b0d778180d22986b7e2f21cc..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.base.unix;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.commons.io.FileUtils;
-import org.testng.annotations.Test;
-
-import ch.rinn.restrictions.Friend;
-import ch.systemsx.cisd.base.BuildAndEnvironmentInfo;
-import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
-import ch.systemsx.cisd.base.unix.Unix.Group;
-import ch.systemsx.cisd.base.unix.Unix.Password;
-import ch.systemsx.cisd.base.unix.Unix.Stat;
-
-/**
- * Test cases for the {@link Unix} system calls.
- * 
- * @author Bernd Rinn
- */
-@Friend(toClasses = Unix.class)
-public class UnixTests extends AbstractFileSystemTestCase
-{
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoRegularFile() throws IOException
-    {
-        final short accessMode = (short) 0777;
-        final String content = "someText\n";
-        final File f = new File(workingDirectory, "someFile");
-        FileUtils.writeStringToFile(f, content);
-        Unix.setAccessMode(f.getAbsolutePath(), accessMode);
-        final Stat info = Unix.getLinkInfo(f.getAbsolutePath());
-        Unix.setOwner(f.getAbsolutePath(), info.getUid(), info.getGid());
-        assertEquals(1, info.getNumberOfHardLinks());
-        assertEquals(content.length(), info.getSize());
-        assertEquals(accessMode, info.getPermissions());
-        assertEquals("root", Unix.tryGetUserNameForUid(0));
-        assertEquals(FileLinkType.REGULAR_FILE, info.getLinkType());
-        assertFalse(info.isSymbolicLink());
-        assertEquals(f.lastModified(), 1000 * info.getLastModified());
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testGetLinkNull() throws IOException
-    {
-        Unix.getLinkInfo(null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoDirectory() throws IOException
-    {
-        final File d = new File(workingDirectory, "someDir");
-        d.mkdir();
-        final Stat info = Unix.getLinkInfo(d.getAbsolutePath());
-        assertEquals(2, info.getNumberOfHardLinks());
-        assertEquals(FileLinkType.DIRECTORY, info.getLinkType());
-        assertFalse(info.isSymbolicLink());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoSymLink() throws IOException
-    {
-        final File f = new File(workingDirectory, "someOtherFile");
-        final String content = "someMoreText\n";
-        FileUtils.writeStringToFile(f, content);
-        final File s = new File(workingDirectory, "someLink");
-        Unix.createSymbolicLink(f.getAbsolutePath(), s.getAbsolutePath());
-        final Stat info = Unix.getLinkInfo(s.getAbsolutePath());
-        assertEquals(1, info.getNumberOfHardLinks());
-        assertEquals(FileLinkType.SYMLINK, info.getLinkType());
-        assertTrue(info.isSymbolicLink());
-        assertEquals(f.getAbsolutePath(), info.tryGetSymbolicLink());
-        assertEquals(f.getAbsolutePath(), Unix.tryReadSymbolicLink(s.getAbsolutePath()));
-        assertNull(Unix.getLinkInfo(s.getAbsolutePath(), false).tryGetSymbolicLink());
-
-        final Stat info2 = Unix.getFileInfo(s.getAbsolutePath());
-        assertEquals(1, info2.getNumberOfHardLinks());
-        assertEquals(content.length(), info2.getSize());
-        assertEquals(FileLinkType.REGULAR_FILE, info2.getLinkType());
-        assertFalse(info2.isSymbolicLink());
-        assertNull(info2.tryGetSymbolicLink());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoSymLinkDanglingLink() throws IOException
-    {
-        final File s = new File(workingDirectory, "someDanglingLink");
-        Unix.createSymbolicLink("link_to_nowhere", s.getAbsolutePath());
-        final Stat info = Unix.tryGetLinkInfo(s.getAbsolutePath());
-        assertNotNull(info);
-        assertEquals(1, info.getNumberOfHardLinks());
-        assertEquals(FileLinkType.SYMLINK, info.getLinkType());
-        assertTrue(info.isSymbolicLink());
-        final Stat info2 = Unix.tryGetFileInfo(s.getAbsolutePath());
-        assertNull(info2);
-        assertEquals("No such file or directory", Unix.getLastError());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoNonExistent() throws IOException
-    {
-        final File s = new File(workingDirectory, "nonExistent");
-        final Stat info = Unix.tryGetLinkInfo(s.getAbsolutePath());
-        assertNull(info);
-        assertEquals("No such file or directory", Unix.getLastError());
-        final Stat info2 = Unix.tryGetFileInfo(s.getAbsolutePath());
-        assertNull(info2);
-        assertEquals("No such file or directory", Unix.getLastError());
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testCreateSymbolicLinkNull() throws IOException
-    {
-        Unix.createSymbolicLink(null, null);
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testCreateHardLinkNull() throws IOException
-    {
-        Unix.createHardLink(null, null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetLinkInfoHardLink() throws IOException
-    {
-        final File f = new File(workingDirectory, "someOtherFile");
-        f.createNewFile();
-        final File s = new File(workingDirectory, "someLink");
-        Unix.createHardLink(f.getAbsolutePath(), s.getAbsolutePath());
-        final Stat info = Unix.getLinkInfo(s.getAbsolutePath());
-        assertEquals(2, info.getNumberOfHardLinks());
-        assertEquals(FileLinkType.REGULAR_FILE, info.getLinkType());
-        assertFalse(info.isSymbolicLink());
-        assertNull(info.tryGetSymbolicLink());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetUid()
-    {
-        assertTrue(Unix.getUid() > 0);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetEuid()
-    {
-        assertTrue(Unix.getEuid() > 0);
-        assertEquals(Unix.getUid(), Unix.getEuid());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetGid()
-    {
-        assertTrue(Unix.getGid() > 0);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetEgid()
-    {
-        assertTrue(Unix.getEgid() > 0);
-        assertEquals(Unix.getGid(), Unix.getEgid());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetUidForUserName()
-    {
-        assertEquals(0, Unix.getUidForUserName("root"));
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testGetUidForUserNameNull() throws IOException
-    {
-        Unix.getUidForUserName(null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testGetGidForGroupName()
-    {
-        final String rootGroup = Unix.tryGetGroupNameForGid(0);
-        assertTrue(rootGroup, "root".equals(rootGroup) || "wheel".equals(rootGroup));
-        assertEquals(0, Unix.getGidForGroupName(rootGroup));
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testGetGidForGroupNameNull() throws IOException
-    {
-        Unix.getGidForGroupName(null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testTryGetGroupByName()
-    {
-        final String rootGroup = Unix.tryGetGroupNameForGid(0);
-        final Group group = Unix.tryGetGroupByName(rootGroup);
-        assertNotNull(group);
-        assertEquals(rootGroup, group.getGroupName());
-        assertEquals(0, group.getGid());
-        assertNotNull(group.getGroupMembers());
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testTryGetGroupByNameNull() throws IOException
-    {
-        Unix.tryGetGroupByName(null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testTryGetGroupByGid()
-    {
-        final Group group = Unix.tryGetGroupByGid(0);
-        assertNotNull(group);
-        final String rootGroup = group.getGroupName();
-        assertTrue(rootGroup, "root".equals(rootGroup) || "wheel".equals(rootGroup));
-        assertEquals(0, group.getGid());
-        assertNotNull(group.getGroupMembers());
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testTryGetUserByName()
-    {
-        final Password user = Unix.tryGetUserByName("root");
-        assertNotNull(user);
-        assertEquals("root", user.getUserName());
-        assertEquals(0, user.getUid());
-        assertEquals(0, user.getGid());
-        assertNotNull(user.getUserFullName());
-        assertNotNull(user.getHomeDirectory());
-        assertNotNull(user.getShell());
-        assertTrue(user.getShell().startsWith("/"));
-    }
-
-    @Test(groups =
-        { "requires_unix" }, expectedExceptions = NullPointerException.class)
-    public void testTryGetUserByNameNull() throws IOException
-    {
-        Unix.tryGetUserByName(null);
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testTryGetUserByUid()
-    {
-        final Password user = Unix.tryGetUserByUid(0);
-        assertNotNull(user);
-        assertEquals("root", user.getUserName());
-        assertEquals(0, user.getUid());
-        assertEquals(0, user.getGid());
-        assertNotNull(user.getUserFullName());
-        assertNotNull(user.getHomeDirectory());
-        assertNotNull(user.getShell());
-        assertTrue(user.getShell().startsWith("/"));
-    }
-
-    @Test(groups =
-        { "requires_unix" })
-    public void testDetectProcess()
-    {
-        assertTrue(Unix.canDetectProcesses());
-        assertTrue(Unix.isProcessRunningPS(Unix.getPid()));
-    }
-
-    public static void main(String[] args) throws Throwable
-    {
-        System.out.println(BuildAndEnvironmentInfo.INSTANCE);
-        System.out.println("Test class: " + UnixTests.class.getSimpleName());
-        System.out.println();
-        if (Unix.isOperational() == false)
-        {
-            System.err.println("No unix library found.");
-            System.exit(1);
-        }
-        final UnixTests test = new UnixTests();
-        try
-        {
-            for (Method m : UnixTests.class.getMethods())
-            {
-                final Test testAnnotation = m.getAnnotation(Test.class);
-                if (testAnnotation == null)
-                {
-                    continue;
-                }
-                System.out.println("Running " + m.getName());
-                test.setUp();
-                try
-                {
-                    m.invoke(test);
-                } catch (InvocationTargetException wrapperThrowable)
-                {
-                    final Throwable th = wrapperThrowable.getCause();
-                    boolean exceptionFound = false;
-                    for (Class<?> expectedExClazz : testAnnotation.expectedExceptions())
-                    {
-                        if (expectedExClazz == th.getClass())
-                        {
-                            exceptionFound = true;
-                            break;
-                        }
-                    }
-                    if (exceptionFound == false)
-                    {
-                        throw th;
-                    }
-                }
-            }
-            System.out.println("Tests OK!");
-        } finally
-        {
-            test.afterClass();
-        }
-    }
-
-}
diff --git a/base/sourceTest/java/tests.xml b/base/sourceTest/java/tests.xml
deleted file mode 100644
index 0a6ff5bdd40eb771c41d2d694e989a7d92957f58..0000000000000000000000000000000000000000
--- a/base/sourceTest/java/tests.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<suite name="All" verbose="1">
-    <test name="All">
-        <groups>
-            <run>
-                <exclude name="broken" />
-            </run>
-        </groups>
-        <packages>
-            <package name="ch.systemsx.cisd.base.*" />
-        </packages>
-    </test>
-</suite>