diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..a08bab0068246f8d57b3789e10f6f0f4105817ad
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,33 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+## v0.9.0  -  2020-04-15  -  faster bootstraps, extreme value upsamling
+### general
+- improved and faster bootstrap workflow
+- new plot PlotAvailability
+- extreme values upsampling
+- improved runtime environment
+
+### new features
+- entire bootstrap workflow has been refactored and much faster now, can be skipped with `evaluate_bootstraps=False`, #60
+- upsampling of extreme values, set with parameter `extreme_values=[your_values_standardised]` (e.g. `[1, 2]`) and 
+  `extremes_on_right_tail_only=<True/False>` if only right tail of distribution is affected or both, #58, #87
+- minimal data length property (in total and for all subsets), #76
+- custom objects in model class to load customised model objects like padding class, loss, #72
+- new plot for data availability: `PlotAvailability`, #103
+- introduced (default) `plot_list` to specify which plots to draw
+- latex and markdown information on sample sizes for each station, #90
+
+### technical
+- implemented tests on gpu and from scratch for develop, release and master branches, #95
+- usage of tensorflow 1.13.1 (gpu / cpu), separated in 2 different requirements, #81
+- new abstract plot class to have uniform plot class design
+- New time tracking wrapper to use for functions or classes
+- improved logger (info on display, debug into file), #73, #85, #88
+- improved run environment, especially for error handling, #86
+- prefix `general` in data store scope is now optional and can be skipped. If given scope is not `general`, it is 
+  treated as subscope, #82
+- all 2D Padding classes are now selected by `Padding2D(padding_name=<padding_type>)` e.g. 
+  `Padding2D(padding_name="SymPad2D")`, #78
+- custom learning rate (or lr_decay) is optional now, #71
+
diff --git a/src/__init__.py b/src/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..105139438b2ab336bf996f27a5867da9469ddff2 100644
--- a/src/__init__.py
+++ b/src/__init__.py
@@ -0,0 +1,18 @@
+__version_info__ = {
+    'major': 1,
+    'minor': 0,
+    'micro': 0,
+}
+
+
+def get_version(short=False):
+    assert __version_info__["releaselevel"] in ("alpha", "beta", "final")
+    vers = [f"{__version_info__['major']}.{__version_info__['minor']}"]
+    if __version_info__["micro"]:
+        vers.append(f".{__version_info__['micro']}")
+    return "".join(vers)
+
+
+__version__ = get_version()
+__author__ = "Lukas H. Leufen, Felix Kleinert"
+__email__ = "l.leufen@fz-juelich.de",