diff --git a/file-transfer/build.gradle b/lib-file-download/file-transfer/build.gradle
similarity index 100%
rename from file-transfer/build.gradle
rename to lib-file-download/file-transfer/build.gradle
diff --git a/file-transfer/gradle/wrapper/gradle-wrapper.jar b/lib-file-download/file-transfer/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from file-transfer/gradle/wrapper/gradle-wrapper.jar
rename to lib-file-download/file-transfer/gradle/wrapper/gradle-wrapper.jar
diff --git a/file-transfer/gradle/wrapper/gradle-wrapper.properties b/lib-file-download/file-transfer/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from file-transfer/gradle/wrapper/gradle-wrapper.properties
rename to lib-file-download/file-transfer/gradle/wrapper/gradle-wrapper.properties
diff --git a/file-transfer/gradlew b/lib-file-download/file-transfer/gradlew
similarity index 100%
rename from file-transfer/gradlew
rename to lib-file-download/file-transfer/gradlew
diff --git a/file-transfer/gradlew.bat b/lib-file-download/file-transfer/gradlew.bat
similarity index 100%
rename from file-transfer/gradlew.bat
rename to lib-file-download/file-transfer/gradlew.bat
diff --git a/file-transfer/javaproject.gradle b/lib-file-download/file-transfer/javaproject.gradle
similarity index 100%
rename from file-transfer/javaproject.gradle
rename to lib-file-download/file-transfer/javaproject.gradle
diff --git a/file-transfer/repository.gradle b/lib-file-download/file-transfer/repository.gradle
similarity index 100%
rename from file-transfer/repository.gradle
rename to lib-file-download/file-transfer/repository.gradle
diff --git a/file-transfer/settings.gradle b/lib-file-download/file-transfer/settings.gradle
similarity index 100%
rename from file-transfer/settings.gradle
rename to lib-file-download/file-transfer/settings.gradle
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractBulkInputStream.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractBulkInputStream.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractBulkInputStream.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractBulkInputStream.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractLogger.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractLogger.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractLogger.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/AbstractLogger.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/Chunk.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/Chunk.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/Chunk.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/Chunk.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/ChunkInputStream.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ChunkInputStream.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/ChunkInputStream.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ChunkInputStream.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/ConsoleLogger.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ConsoleLogger.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/ConsoleLogger.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ConsoleLogger.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkDeserializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkDeserializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkDeserializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkDeserializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkSerializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkSerializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkSerializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultChunkSerializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultDeserializerProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultDeserializerProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultDeserializerProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultDeserializerProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultRetryProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultRetryProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultRetryProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultRetryProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultSerializerProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultSerializerProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultSerializerProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DefaultSerializerProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClient.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClient.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClient.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClient.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientConfig.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientConfig.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientConfig.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientConfig.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientDownload.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientDownload.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientDownload.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadClientDownload.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadException.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadException.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadException.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadException.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStream.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStream.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStream.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStream.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStreamReader.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStreamReader.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStreamReader.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadInputStreamReader.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemNotFoundException.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemNotFoundException.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemNotFoundException.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadItemNotFoundException.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadListenerAdapter.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadListenerAdapter.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadListenerAdapter.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadListenerAdapter.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadPreferences.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadPreferences.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadPreferences.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadPreferences.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadRange.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadRange.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadRange.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadRange.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerConfig.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerConfig.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerConfig.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerConfig.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerDownload.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerDownload.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerDownload.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadServerDownload.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSession.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSession.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSession.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSession.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSessionId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSessionId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSessionId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadSessionId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadState.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadState.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadState.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadState.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStatus.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStatus.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStatus.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStatus.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStreamId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStreamId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStreamId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/DownloadStreamId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/FileChunk.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileChunk.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/FileChunk.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileChunk.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemChunkProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemChunkProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemChunkProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemChunkProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemDownloadStore.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemDownloadStore.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemDownloadStore.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/FileSystemDownloadStore.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkDeserializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkDeserializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkDeserializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkDeserializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkQueue.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkQueue.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkQueue.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkQueue.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkSerializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkSerializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkSerializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IChunkSerializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IConcurrencyProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IConcurrencyProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IConcurrencyProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IConcurrencyProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProviderFactory.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProviderFactory.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProviderFactory.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDeserializerProviderFactory.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdDeserializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdDeserializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdDeserializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdDeserializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdSerializer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdSerializer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdSerializer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadItemIdSerializer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadListener.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadListener.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadListener.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadListener.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadServer.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadServer.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadServer.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadServer.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStore.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStore.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStore.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStore.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStoreFactory.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStoreFactory.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStoreFactory.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IDownloadStoreFactory.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/ILogger.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ILogger.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/ILogger.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ILogger.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryAction.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryAction.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryAction.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryAction.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProviderFactory.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProviderFactory.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProviderFactory.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IRetryProviderFactory.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/ISerializerProvider.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ISerializerProvider.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/ISerializerProvider.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ISerializerProvider.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionId.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionManager.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionManager.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionManager.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/IUserSessionManager.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadSessionException.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadSessionException.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadSessionException.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadSessionException.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadStreamException.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadStreamException.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadStreamException.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidDownloadStreamException.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidUserSessionException.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidUserSessionException.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidUserSessionException.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/InvalidUserSessionException.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/LogLevel.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/LogLevel.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/LogLevel.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/LogLevel.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/NullLogger.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/NullLogger.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/NullLogger.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/NullLogger.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/PayloadInputStream.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/PayloadInputStream.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/PayloadInputStream.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/PayloadInputStream.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/ToString.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ToString.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/ToString.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/ToString.java
diff --git a/file-transfer/source/java/ch/ethz/sis/filetransfer/UserSessionId.java b/lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/UserSessionId.java
similarity index 100%
rename from file-transfer/source/java/ch/ethz/sis/filetransfer/UserSessionId.java
rename to lib-file-download/file-transfer/source/java/ch/ethz/sis/filetransfer/UserSessionId.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/ChunkInputStreamTest.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/ChunkInputStreamTest.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/ChunkInputStreamTest.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/ChunkInputStreamTest.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadClientTest.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadClientTest.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadClientTest.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadClientTest.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadExample.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadExample.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadExample.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadExample.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadInputStreamTest.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadInputStreamTest.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadInputStreamTest.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/DownloadInputStreamTest.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadServer.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadServer.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadServer.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadServer.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadStore.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadStore.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadStore.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailingDownloadStore.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailureGenerator.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailureGenerator.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailureGenerator.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/FailureGenerator.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/HttpDownloadServer.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/HttpDownloadServer.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/HttpDownloadServer.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/HttpDownloadServer.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/InconsistentCRCDownloadServer.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/InconsistentCRCDownloadServer.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/InconsistentCRCDownloadServer.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/InconsistentCRCDownloadServer.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/PayloadInputStreamTest.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/PayloadInputStreamTest.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/PayloadInputStreamTest.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/PayloadInputStreamTest.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/RecordingLogger.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/RecordingLogger.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/RecordingLogger.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/RecordingLogger.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/StreamTestUtils.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/StreamTestUtils.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/StreamTestUtils.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/StreamTestUtils.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestAssertions.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestAssertions.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestAssertions.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestAssertions.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestChunkProvider.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestChunkProvider.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestChunkProvider.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestChunkProvider.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestConcurrencyProvider.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestConcurrencyProvider.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestConcurrencyProvider.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestConcurrencyProvider.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemId.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemId.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemId.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemId.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdDeserializer.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdDeserializer.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdDeserializer.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdDeserializer.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdSerializer.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdSerializer.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdSerializer.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadItemIdSerializer.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadStore.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadStore.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadStore.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestDownloadStore.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestInputStream.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestInputStream.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestInputStream.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestInputStream.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestLogger.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestLogger.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestLogger.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestLogger.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSession.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSession.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSession.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSession.java
diff --git a/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSessionManager.java b/lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSessionManager.java
similarity index 100%
rename from file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSessionManager.java
rename to lib-file-download/file-transfer/sourceTest/java/ch/ethz/sis/filetransfer/TestUserSessionManager.java
diff --git a/file-transfer/sourceTest/java/tests.xml b/lib-file-download/file-transfer/sourceTest/java/tests.xml
similarity index 100%
rename from file-transfer/sourceTest/java/tests.xml
rename to lib-file-download/file-transfer/sourceTest/java/tests.xml
diff --git a/file-transfer/sourceTest/test-files/testFile1.txt b/lib-file-download/file-transfer/sourceTest/test-files/testFile1.txt
similarity index 100%
rename from file-transfer/sourceTest/test-files/testFile1.txt
rename to lib-file-download/file-transfer/sourceTest/test-files/testFile1.txt
diff --git a/file-transfer/sourceTest/test-files/testFile2.txt b/lib-file-download/file-transfer/sourceTest/test-files/testFile2.txt
similarity index 100%
rename from file-transfer/sourceTest/test-files/testFile2.txt
rename to lib-file-download/file-transfer/sourceTest/test-files/testFile2.txt
diff --git a/file-transfer/sourceTest/test-files/testFolder/testFile3.txt b/lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFile3.txt
similarity index 100%
rename from file-transfer/sourceTest/test-files/testFolder/testFile3.txt
rename to lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFile3.txt
diff --git a/file-transfer/sourceTest/test-files/testFolder/testFile4.txt b/lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFile4.txt
similarity index 100%
rename from file-transfer/sourceTest/test-files/testFolder/testFile4.txt
rename to lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFile4.txt
diff --git a/file-transfer/sourceTest/test-files/testFolder/testFolder2/testFile5.txt b/lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFolder2/testFile5.txt
similarity index 100%
rename from file-transfer/sourceTest/test-files/testFolder/testFolder2/testFile5.txt
rename to lib-file-download/file-transfer/sourceTest/test-files/testFolder/testFolder2/testFile5.txt