Repository: schelterlabs/jenga (language: python)

Issue:
Some improvements to install jenga as package



Discussion / hints:

Fix patch:
diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..8987fbb
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,28 @@
+# .coveragerc to control coverage.py
+[run]
+branch = True
+source = jenga
+# omit = bad_file.py
+
+[paths]
+source =
+    src/
+    */site-packages/
+
+[report]
+# Regexes for lines to exclude from consideration
+exclude_lines =
+    # Have to re-enable the standard pragma
+    pragma: no cover
+
+    # Don't complain about missing debug-only code:
+    def __repr__
+    if self\.debug
+
+    # Don't complain if tests don't hit defensive assertion code:
+    raise AssertionError
+    raise NotImplementedError
+
+    # Don't complain if non-runnable code isn't run:
+    if 0:
+    if __name__ == .__main__.:
diff --git a/.github/python-publish.yml b/.github/python-publish.yml
new file mode 100644
index 0000000..3bfabfc
--- /dev/null
+++ b/.github/python-publish.yml
@@ -0,0 +1,36 @@
+# This workflow will upload a Python Package using Twine when a release is created
+# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
+
+# This workflow uses actions that are not certified by GitHub.
+# They are provided by a third-party and are governed by
+# separate terms of service, privacy policy, and support
+# documentation.
+
+name: Upload Python Package
+
+on:
+  release:
+    types: [published]
+
+jobs:
+  deploy:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: '3.x'
+    - name: Install dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install build
+    - name: Build package
+      run: python -m build
+    - name: Publish package
+      uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
+      with:
+        user: __token__
+        password: ${{ secrets.PYPI_API_TOKEN }}
diff --git a/.gitignore b/.gitignore
index defbe93..d392587 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,54 @@
-.idea/
-notebooks/
-env/
-**/__pycache__
-.ipynb_checkpoints/
-play.py
-imputer_model*
-*.jsonpickle
-*.pkl
-random_validation_*.csv
+# Temporary and binary files
+*~
+*.py[cod]
+*.so
+*.cfg
+!.isort.cfg
+!setup.cfg
+*.orig
+*.log
+*.pot
+__pycache__/*
+.cache/*
+.*.swp
+*/.ipynb_checkpoints/*
+.DS_Store
+
+# Project files
+.ropeproject
+.project
+.pydevproject
+.settings
+.idea
+tags
+
+# Package files
+*.egg
+*.eggs/
+.installed.cfg
+*.egg-info
+
+# Unittest and coverage
+htmlcov/*
+.coverage
+.tox
+junit.xml
+coverage.xml
+.pytest_cache/
+
+# Build and docs folder/files
+build/*
+dist/*
+sdist/*
+docs/api/*
+docs/_rst/*
+docs/_build/*
+cover/*
+MANIFEST
+
+# Per-project virtualenvs
+.venv*/
+
+
+.vscode
+.linked_env
diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 0000000..fb30b36
--- /dev/null
+++ b/.isort.cfg
@@ -0,0 +1,10 @@
+[settings]
+line_length=88
+indent='    '
+skip=.tox,.venv,build,dist
+known_standard_library=setuptools,pkg_resources
+known_test=pytest
+known_first_party=jenga
+sections=FUTURE,STDLIB,COMPAT,TEST,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
+default_section=THIRDPARTY
+multi_line_output=3
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..0e84620
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,25 @@
+exclude: '^docs/conf.py'
+
+repos:
+- repo: git://github.com/pre-commit/pre-commit-hooks
+  rev: v2.2.3
+  hooks:
+  - id: trailing-whitespace
+  - id: check-added-large-files
+  - id: check-ast
+  - id: check-json
+  - id: check-merge-conflict
+  - id: check-xml
+  - id: check-yaml
+  - id: debug-statements
+  - id: end-of-file-fixer
+  - id: requirements-txt-fixer
+  - id: mixed-line-ending
+    args: ['--fix=no']
+  - id: flake8
+    args: ['--max-line-length=150']  # default of Black
+
+- repo: https://github.com/pre-commit/mirrors-isort
+  rev: v4.3.4
+  hooks:
+  - id: isort
diff --git a/AUTHORS.rst b/AUTHORS.rst
new file mode 100644
index 0000000..61c13f2
--- /dev/null
+++ b/AUTHORS.rst
@@ -0,0 +1,3 @@
+============
+Contributors
+============
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..226e6f5
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,10 @@
+=========
+Changelog
+=========
+
+Version 0.1
+===========
+
+- Feature A added
+- FIX: nasty bug #1729 fixed
+- add your changes here!
diff --git a/LICENSE b/LICENSE.txt
similarity index 100%
rename from LICENSE
rename to LICENSE.txt
diff --git a/README.md b/README.md
index e6bc2d5..74220b5 100644
--- a/README.md
+++ b/README.md
@@ -4,35 +4,97 @@
 
 __Jenga__ is an open source experimentation library that allows data science practititioners and researchers to study the effect of common data corruptions (e.g., missing values, broken character encodings) on the prediction quality of their ML models.
 
-We design Jenga around three core abstractions: 
+We design Jenga around three core abstractions:
 
- * [Tasks](https://github.com/schelterlabs/jenga/tree/master/jenga/tasks) contain a raw dataset, an ML model and a prediction task
- * [Data corruptions](https://github.com/schelterlabs/jenga/tree/master/jenga/corruptions) take raw input data and randomly apply certain data errors to them (e.g., missing values)
- * [Evaluators](https://github.com/schelterlabs/jenga/tree/master/jenga/evaluation) take a task and data corruptions, and execute the evaluation by repeatedly corrupting the test data of the task, and recording the predictive performance of the model on the corrupted test data.
+ * [Tasks](tasks) contain a raw dataset, an ML model and a prediction task
+ * [Data corruptions](corruptions) take raw input data and randomly apply certain data errors to them (e.g., missing values)
+ * [Evaluators](evaluation) take a task and data corruptions, and execute the evaluation by repeatedly corrupting the test data of the task, and recording the predictive performance of the model on the corrupted test data.
 
-Jenga's goal is assist data scientists with detecting such errors early, so that they can protected their models against them. We provide a [jupyter notebook outlining the most basic usage of Jenga](basic-example.ipynb).
+Jenga's goal is assist data scientists with detecting such errors early, so that they can protected their models against them. We provide a [jupyter notebook outlining the most basic usage of Jenga](notebooks/basic-example.ipynb).
 
 Note that you can implement custom tasks and data corruptions by extending the corresponding provided [base classes](https://github.com/schelterlabs/jenga/blob/master/jenga/basis.py).
 
 We additionally provide three advanced usage examples of Jenga:
- * [Studying the impact of missing values](example-missing-value-imputation.ipynb)
- * [Stress testing a feature schema](example-schema-stresstest.ipynb)
- * [Evaluating the helpfulness of data augmentation for an image recognition task](example-image-augmentation.ipynb)
+ * [Studying the impact of missing values](notebooks/example-missing-value-imputation.ipynb)
+ * [Stress testing a feature schema](notebooks/example-schema-stresstest.ipynb)
+ * [Evaluating the helpfulness of data augmentation for an image recognition task](notebooks/example-image-augmentation.ipynb)
+
 
 ## Installation
 
-Jenga requires Python 3.6 and virtualenv. You can get the Jenga code running as follows:
+The following options are possible:
+
+```bash
+pip install jenga             # jenga is ready for the most corruptions (not images)
+pip install jenga[all]        # install all dependencies, optimal for development
+pip install jenga[image]      # also installs tensorflow ad image corruption/augmentation libraries
+pip install jenga[validation] # also install tensorflow and tensorflow-data-validation necessary for SchemaStresstest
+```
 
-1. Checkout this git repository
-1. Create a virtual environment with `python3.6 -m venv env`
-1. Activate the environment with `source env/bin/activate`
-1. Install the latest version of pip with `pip install --upgrade pip`
-1. Install the dependencies with `pip install -r requirements.txt`
 
 ## Research
 
 __Jenga__ is based on experiences and code from our ongoing research efforts:
 
- * Sebastian Schelter, Tammo Rukat, Felix Biessmann (2020). [Learning to Validate the Predictions of Black Box Classifiers on Unseen Data.](https://ssc.io/pdf/mod0077s.pdf) ACM SIGMOD. 
- * Tammo Rukat, Dustin Lange, Sebastian Schelter, Felix Biessmann (2020): [Towards Automated ML Model Monitoring: Measure, Improve and Quantify Data Quality.](https://ssc.io/pdf/autoops.pdf) ML Ops workshop at the Conference on Machine Learning and Systems&nbsp;(MLSys). 
+ * Sebastian Schelter, Tammo Rukat, Felix Biessmann (2020). [Learning to Validate the Predictions of Black Box Classifiers on Unseen Data.](https://ssc.io/pdf/mod0077s.pdf) ACM SIGMOD.
+ * Tammo Rukat, Dustin Lange, Sebastian Schelter, Felix Biessmann (2020): [Towards Automated ML Model Monitoring: Measure, Improve and Quantify Data Quality.](https://ssc.io/pdf/autoops.pdf) ML Ops workshop at the Conference on Machine Learning and Systems&nbsp;(MLSys).
  * Felix Biessmann, Tammo Rukat, Philipp Schmidt, Prathik Naidu, Sebastian Schelter, Andrey Taptunov, Dustin Lange, David Salinas (2019). [DataWig - Missing Value Imputation for Tables.](https://ssc.io/pdf/datawig.pdf) JMLR (open source track)
+
+
+
+## Dependency Management & Reproducibility
+
+1. Always keep your abstract (unpinned) dependencies updated in `environment.yaml` and eventually
+   in `setup.cfg` if you want to ship and install your package via `pip` later on.
+2. Create concrete dependencies as `environment.lock.yaml` for the exact reproduction of your
+   environment with:
+   ```
+   conda env export -n jenga -f environment.lock.yaml
+   ```
+   For multi-OS development, consider using `--no-builds` during the export.
+3. Update your current environment with respect to a new `environment.lock.yaml` using:
+   ```
+   conda env update -f environment.lock.yaml --prune
+   ```
+
+
+ ## Installation for Development
+
+ In order to set up the necessary environment:
+
+1. create an environment `jenga` with the help of [conda],
+   ```
+   conda env create -f environment.yaml
+   ```
+2. activate the new environment with
+   ```
+   conda activate jenga
+   ```
+3. install `jenga` with:
+   ```
+   python setup.py install # or `develop`
+   ```
+
+Optional and needed only once after `git clone`:
+
+4. install several [pre-commit] git hooks with:
+   ```
+   pre-commit install
+   ```
+   and checkout the configuration under `.pre-commit-config.yaml`.
+   The `-n, --no-verify` flag of `git commit` can be used to deactivate pre-commit hooks temporarily.
+
+Then take a look into the `notebooks` folder.
+
+
+## Note
+
+This project has been set up using PyScaffold 3.2.2 and the [dsproject extension] 0.4.
+For details and usage information on PyScaffold see https://pyscaffold.org/.
+
+[conda]: https://docs.conda.io/
+[pre-commit]: https://pre-commit.com/
+[Jupyter]: https://jupyter.org/
+[nbstripout]: https://github.com/kynan/nbstripout
+[Google style]: http://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
+[dsproject extension]: https://github.com/pyscaffold/pyscaffoldext-dsproject
diff --git a/configs/.gitignore b/configs/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/data/.gitignore b/data/.gitignore
new file mode 100644
index 0000000..edd067d
--- /dev/null
+++ b/data/.gitignore
@@ -0,0 +1,7 @@
+# Ignore everything in this directory
+*
+# Except this file and .gitignore in sub directories
+!.gitignore
+!income
+!raw
+!reviews
\ No newline at end of file
diff --git a/data/raw/.gitignore b/data/raw/.gitignore
new file mode 100644
index 0000000..86d0cb2
--- /dev/null
+++ b/data/raw/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
\ No newline at end of file
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..53889c8
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,193 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = ../build/sphinx/
+AUTODOCDIR    = api
+AUTODOCBUILD  = sphinx-apidoc
+PROJECT       = jenga
+MODULEDIR     = ../src/jenga
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext doc-requirements
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  xml        to make Docutils-native XML files"
+	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	rm -rf $(BUILDDIR)/* $(AUTODOCDIR)
+
+$(AUTODOCDIR): $(MODULEDIR)
+	mkdir -p $@
+	$(AUTODOCBUILD) -f -o $@ $^
+
+doc-requirements: $(AUTODOCDIR)
+
+html: doc-requirements
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml: doc-requirements
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml: doc-requirements
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle: doc-requirements
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json: doc-requirements
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp: doc-requirements
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp: doc-requirements
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/$(PROJECT).qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/$(PROJECT).qhc"
+
+devhelp: doc-requirements
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $HOME/.local/share/devhelp/$(PROJECT)"
+	@echo "# ln -s $(BUILDDIR)/devhelp $HOME/.local/share/devhelp/$(PROJEC)"
+	@echo "# devhelp"
+
+epub: doc-requirements
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+patch-latex:
+	find _build/latex -iname "*.tex" | xargs -- \
+		sed -i'' 's~includegraphics{~includegraphics\[keepaspectratio,max size={\\textwidth}{\\textheight}\]{~g'
+
+latex: doc-requirements
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	$(MAKE) patch-latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf: doc-requirements
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	$(MAKE) patch-latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja: doc-requirements
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through platex and dvipdfmx..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text: doc-requirements
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man: doc-requirements
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo: doc-requirements
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info: doc-requirements
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext: doc-requirements
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes: doc-requirements
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck: doc-requirements
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest: doc-requirements
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+
+xml: doc-requirements
+	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+	@echo
+	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml: doc-requirements
+	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+	@echo
+	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/docs/_static/.gitignore b/docs/_static/.gitignore
new file mode 100644
index 0000000..3c96363
--- /dev/null
+++ b/docs/_static/.gitignore
@@ -0,0 +1,1 @@
+# Empty directory
diff --git a/docs/authors.rst b/docs/authors.rst
new file mode 100644
index 0000000..cd8e091
--- /dev/null
+++ b/docs/authors.rst
@@ -0,0 +1,2 @@
+.. _authors:
+.. include:: ../AUTHORS.rst
diff --git a/docs/changelog.rst b/docs/changelog.rst
new file mode 100644
index 0000000..871950d
--- /dev/null
+++ b/docs/changelog.rst
@@ -0,0 +1,2 @@
+.. _changes:
+.. include:: ../CHANGELOG.rst
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..569aa23
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,298 @@
+# -*- coding: utf-8 -*-
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import os
+import sys
+import inspect
+import shutil
+
+__location__ = os.path.join(os.getcwd(), os.path.dirname(
+    inspect.getfile(inspect.currentframe())))
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.join(__location__, '../src'))
+
+# -- Run sphinx-apidoc ------------------------------------------------------
+# This hack is necessary since RTD does not issue `sphinx-apidoc` before running
+# `sphinx-build -b html . _build/html`. See Issue:
+# https://github.com/rtfd/readthedocs.org/issues/1139
+# DON'T FORGET: Check the box "Install your project inside a virtualenv using
+# setup.py install" in the RTD Advanced Settings.
+# Additionally it helps us to avoid running apidoc manually
+
+try:  # for Sphinx >= 1.7
+    from sphinx.ext import apidoc
+except ImportError:
+    from sphinx import apidoc
+
+output_dir = os.path.join(__location__, "api")
+module_dir = os.path.join(__location__, "../src/jenga")
+try:
+    shutil.rmtree(output_dir)
+except FileNotFoundError:
+    pass
+
+try:
+    import sphinx
+    from pkg_resources import parse_version
+
+    cmd_line_template = "sphinx-apidoc -f -o {outputdir} {moduledir}"
+    cmd_line = cmd_line_template.format(outputdir=output_dir, moduledir=module_dir)
+
+    args = cmd_line.split(" ")
+    if parse_version(sphinx.__version__) >= parse_version('1.7'):
+        args = args[1:]
+
+    apidoc.main(args)
+except Exception as e:
+    print("Running `sphinx-apidoc` failed!\n{}".format(e))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo',
+              'sphinx.ext.autosummary', 'sphinx.ext.viewcode', 'sphinx.ext.coverage',
+              'sphinx.ext.doctest', 'sphinx.ext.ifconfig', 'sphinx.ext.mathjax',
+              'sphinx.ext.napoleon']
+extensions.append('recommonmark')
+extensions.append('recommonmark')
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+
+# To configure AutoStructify
+def setup(app):
+    from recommonmark.transform import AutoStructify
+    app.add_config_value('recommonmark_config', {
+        'auto_toc_tree_section': 'Contents',
+        'enable_eval_rst': True,
+        'enable_math': True,
+        'enable_inline_math': True
+    }, True)
+    app.add_transform(AutoStructify)
+
+
+# To configure AutoStructify
+def setup(app):
+    from recommonmark.transform import AutoStructify
+    app.add_config_value('recommonmark_config', {
+        'auto_toc_tree_section': 'Contents',
+        'enable_eval_rst': True,
+        'enable_math': True,
+        'enable_inline_math': True
+    }, True)
+    app.add_transform(AutoStructify)
+
+# The suffix of source filenames.
+source_suffix = ['.rst', '.md']
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'jenga'
+copyright = u'2020, Sebastian Jäger'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = ''  # Is set by calling `setup.py docs`
+# The full version, including alpha/beta/rc tags.
+release = ''  # Is set by calling `setup.py docs`
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+html_theme_options = {
+    'sidebar_width': '300px',
+    'page_width': '1200px'
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+try:
+    from jenga import __version__ as version
+except ImportError:
+    pass
+else:
+    release = version
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = ""
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_domain_indices = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'jenga-doc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+# 'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+# 'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+# 'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'user_guide.tex', u'jenga Documentation',
+   u'Sebastian Jäger', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = ""
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_domain_indices = True
+
+# -- External mapping ------------------------------------------------------------
+python_version = '.'.join(map(str, sys.version_info[0:2]))
+intersphinx_mapping = {
+    'sphinx': ('http://www.sphinx-doc.org/en/stable', None),
+    'python': ('https://docs.python.org/' + python_version, None),
+    'matplotlib': ('https://matplotlib.org', None),
+    'numpy': ('https://docs.scipy.org/doc/numpy', None),
+    'sklearn': ('http://scikit-learn.org/stable', None),
+    'pandas': ('http://pandas.pydata.org/pandas-docs/stable', None),
+    'scipy': ('https://docs.scipy.org/doc/scipy/reference', None),
+}
\ No newline at end of file
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..5af7d9d
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,59 @@
+=====
+jenga
+=====
+
+This is the documentation of **jenga**.
+
+.. note::
+
+    This is the main page of your project's `Sphinx`_ documentation.
+    It is formatted in `reStructuredText`_. Add additional pages
+    by creating rst-files in ``docs`` and adding them to the `toctree`_ below.
+    Use then `references`_ in order to link them from this page, e.g.
+    :ref:`authors` and :ref:`changes`.
+
+    It is also possible to refer to the documentation of other Python packages
+    with the `Python domain syntax`_. By default you can reference the
+    documentation of `Sphinx`_, `Python`_, `NumPy`_, `SciPy`_, `matplotlib`_,
+    `Pandas`_, `Scikit-Learn`_. You can add more by extending the
+    ``intersphinx_mapping`` in your Sphinx's ``conf.py``.
+
+    The pretty useful extension `autodoc`_ is activated by default and lets
+    you include documentation from docstrings. Docstrings can be written in
+    `Google style`_ (recommended!), `NumPy style`_ and `classical style`_.
+
+
+Contents
+========
+
+.. toctree::
+   :maxdepth: 2
+
+   License <license>
+   Authors <authors>
+   Changelog <changelog>
+   Module Reference <api/modules>
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
+.. _toctree: http://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
+.. _reStructuredText: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
+.. _references: http://www.sphinx-doc.org/en/stable/markup/inline.html
+.. _Python domain syntax: http://sphinx-doc.org/domains.html#the-python-domain
+.. _Sphinx: http://www.sphinx-doc.org/
+.. _Python: http://docs.python.org/
+.. _Numpy: http://docs.scipy.org/doc/numpy
+.. _SciPy: http://docs.scipy.org/doc/scipy/reference/
+.. _matplotlib: https://matplotlib.org/contents.html#
+.. _Pandas: http://pandas.pydata.org/pandas-docs/stable
+.. _Scikit-Learn: http://scikit-learn.org/stable
+.. _autodoc: http://www.sphinx-doc.org/en/stable/ext/autodoc.html
+.. _Google style: https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings
+.. _NumPy style: https://numpydoc.readthedocs.io/en/latest/format.html
+.. _classical style: http://www.sphinx-doc.org/en/stable/domains.html#info-field-lists
diff --git a/docs/license.rst b/docs/license.rst
new file mode 100644
index 0000000..3989c51
--- /dev/null
+++ b/docs/license.rst
@@ -0,0 +1,7 @@
+.. _license:
+
+=======
+License
+=======
+
+.. include:: ../LICENSE.txt
diff --git a/environment.yaml b/environment.yaml
new file mode 100644
index 0000000..1c19eef
--- /dev/null
+++ b/environment.yaml
@@ -0,0 +1,31 @@
+name: jenga
+channels:
+  - defaults
+  - conda-forge
+dependencies:
+  - python>=3.7.*
+  - pip
+  - numpy
+  - pandas
+  - matplotlib
+  - scikit-learn
+  - tensorflow
+  - pip:
+      # add here only pip-packages that are not available in conda/conda-forge! E.g.:
+      - tensorflow-data-validation
+      - imgaug
+      - imagecorruptions
+      - flake8
+      - flake8-mypy
+      - jsonpickle
+  # for development only (could also be kept in a separate environment file)
+  - jupyterlab
+  - pytest
+  - pytest-cov
+  - tox
+  - pre_commit
+  - nbdime
+  - sphinx
+  - recommonmark
+  - pylint
+  - pydocstyle
diff --git a/example-image-augmentation.ipynb b/example-image-augmentation.ipynb
deleted file mode 100644
index 58aeddb..0000000
--- a/example-image-augmentation.ipynb
+++ /dev/null
@@ -1,405 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "Using TensorFlow backend.\n"
-     ]
-    }
-   ],
-   "source": [
-    "from jenga.tasks.shoes import ShoeCategorizationTask\n",
-    "from jenga.corruptions.image import GaussianNoiseCorruption, MotionBlurCorruption, FogCorruption, BrightnessCorruption\n",
-    "\n",
-    "from jenga.evaluation.corruption_impact import CorruptionImpactEvaluator\n",
-    "\n",
-    "import matplotlib.pyplot as plt\n",
-    "\n",
-    "import imgaug.augmenters as iaa"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Instantiate the shoe categorization task and train a baseline model"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n",
-      "32768/29515 [=================================] - 0s 1us/step\n",
-      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n",
-      "26427392/26421880 [==============================] - 4s 0us/step\n",
-      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n",
-      "8192/5148 [===============================================] - 0s 0us/step\n",
-      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n",
-      "4423680/4422102 [==============================] - 1s 0us/step\n",
-      "WARNING:tensorflow:From /Users/felix/code/jenga/yacl_env/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
-      "Instructions for updating:\n",
-      "Colocations handled automatically by placer.\n",
-      "WARNING:tensorflow:From /Users/felix/code/jenga/yacl_env/lib/python3.7/site-packages/tensorflow/python/keras/layers/core.py:143: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
-      "Instructions for updating:\n",
-      "Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
-      "WARNING:tensorflow:From /Users/felix/code/jenga/yacl_env/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
-      "Instructions for updating:\n",
-      "Use tf.cast instead.\n",
-      "12000/12000 [==============================] - 10s 833us/sample - loss: 0.1644 - acc: 0.9372\n"
-     ]
-    }
-   ],
-   "source": [
-    "task = ShoeCategorizationTask(seed=42)\n",
-    "\n",
-    "baseline_model = task.fit_baseline_model(task.train_data, task.train_labels)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Train another model on data augmented with gaussian noise corruptions "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "24000/24000 [==============================] - 20s 823us/sample - loss: 0.1712 - acc: 0.9312\n"
-     ]
-    }
-   ],
-   "source": [
-    "import numpy as np\n",
-    "\n",
-    "augmented_data = [task.train_data]\n",
-    "augmented_labels= [task.train_labels]\n",
-    "\n",
-    "for severity in range(1, 6):\n",
-    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
-    "    sample = task.train_data[indexes, :, :].copy()\n",
-    "    corrupted_sample = GaussianNoiseCorruption(fraction=1.0, severity=severity).transform(sample)\n",
-    "    augmented_data.append(corrupted_sample)\n",
-    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
-    "\n",
-    "gaussian_noise_model = task.fit_baseline_model(np.concatenate(augmented_data), \n",
-    "                                               np.concatenate(augmented_labels))\n"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Evaluate how well both models can handle corrupted test data"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "0/70 (0.6609609999999861)\n",
-      "10/70 (7.375179000000003)\n",
-      "20/70 (14.353520000000003)\n",
-      "30/70 (21.894346999999982)\n",
-      "40/70 (31.181786999999986)\n",
-      "50/70 (42.78151199999999)\n",
-      "60/70 (56.650476999999995)\n",
-      "0/70 (0.6054120000000012)\n",
-      "10/70 (7.062217000000004)\n",
-      "20/70 (14.940179)\n",
-      "30/70 (22.67990599999999)\n",
-      "40/70 (32.379549)\n",
-      "50/70 (44.063777999999985)\n",
-      "60/70 (57.755416999999994)\n"
-     ]
-    }
-   ],
-   "source": [
-    "evaluator = CorruptionImpactEvaluator(task)\n",
-    "\n",
-    "corruptions  = []\n",
-    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
-    "    corruptions.append(GaussianNoiseCorruption(fraction=fraction, severity=4))\n",
-    "    \n",
-    "gaussian_noise_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
-    "gaussian_noise_results_aug = evaluator.evaluate(gaussian_noise_model, 10, *corruptions)    "
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Train another model on data augmented with motion blur corruptions "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "24000/24000 [==============================] - 21s 857us/sample - loss: 0.1858 - acc: 0.9303\n"
-     ]
-    }
-   ],
-   "source": [
-    "import numpy as np\n",
-    "\n",
-    "augmented_data = [task.train_data]\n",
-    "augmented_labels= [task.train_labels]\n",
-    "\n",
-    "for severity in range(1, 6):\n",
-    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
-    "    sample = task.train_data[indexes, :, :].copy()\n",
-    "    corrupted_sample = MotionBlurCorruption(fraction=1.0, severity=severity).transform(sample)\n",
-    "    augmented_data.append(corrupted_sample)\n",
-    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
-    "\n",
-    "motion_blur_model = task.fit_baseline_model(np.concatenate(augmented_data), \n",
-    "                                            np.concatenate(augmented_labels))"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Evaluate how well both models can handle corrupted test data"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 6,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "0/70 (0.7180569999999875)\n",
-      "10/70 (8.176355000000001)\n",
-      "20/70 (17.893361000000027)\n",
-      "30/70 (30.939771000000007)\n",
-      "40/70 (50.148056999999994)\n",
-      "50/70 (80.53554300000002)\n",
-      "60/70 (121.69533600000005)\n",
-      "0/70 (0.7250739999999496)\n",
-      "10/70 (8.000704999999925)\n",
-      "20/70 (18.423169999999914)\n",
-      "30/70 (31.898855000000026)\n",
-      "40/70 (51.26669700000002)\n",
-      "50/70 (82.34317799999997)\n",
-      "60/70 (122.81741199999999)\n"
-     ]
-    }
-   ],
-   "source": [
-    "evaluator = CorruptionImpactEvaluator(task)\n",
-    "\n",
-    "corruptions  = []\n",
-    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
-    "    corruptions.append(MotionBlurCorruption(fraction=fraction, severity=4))\n",
-    "    \n",
-    "motion_blur_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
-    "motion_blur_results_aug = evaluator.evaluate(motion_blur_model, 10, *corruptions)    "
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Train another model on data augmented with fog corruptions "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "24000/24000 [==============================] - 19s 798us/sample - loss: 0.2096 - acc: 0.9173\n"
-     ]
-    }
-   ],
-   "source": [
-    "import numpy as np\n",
-    "\n",
-    "augmented_data = [task.train_data]\n",
-    "augmented_labels= [task.train_labels]\n",
-    "\n",
-    "for severity in range(1, 6):\n",
-    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
-    "    sample = task.train_data[indexes, :, :].copy()\n",
-    "    corrupted_sample = FogCorruption(fraction=1.0, severity=severity).transform(sample)\n",
-    "    augmented_data.append(corrupted_sample)\n",
-    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
-    "\n",
-    "fog_model = task.fit_baseline_model(np.concatenate(augmented_data), \n",
-    "                                    np.concatenate(augmented_labels))"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Evaluate how well both models can handle corrupted test data"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "0/70 (0.7553169999999909)\n",
-      "10/70 (8.355723000000012)\n",
-      "20/70 (17.19362799999999)\n",
-      "30/70 (27.806149000000005)\n",
-      "40/70 (42.206969999999956)\n",
-      "50/70 (62.35116699999992)\n",
-      "60/70 (88.37097199999994)\n",
-      "0/70 (0.6459979999999632)\n",
-      "10/70 (7.607313999999974)\n",
-      "20/70 (16.238458000000037)\n",
-      "30/70 (26.43098599999996)\n",
-      "40/70 (40.998852000000056)\n",
-      "50/70 (65.730503)\n",
-      "60/70 (105.20918100000006)\n"
-     ]
-    }
-   ],
-   "source": [
-    "evaluator = CorruptionImpactEvaluator(task)\n",
-    "\n",
-    "corruptions  = []\n",
-    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
-    "    corruptions.append(FogCorruption(fraction=fraction, severity=4))\n",
-    "    \n",
-    "fog_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
-    "fog_results_aug = evaluator.evaluate(fog_model, 10, *corruptions)   "
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Plot the results"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 504x360 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "def as_series(results):\n",
-    "    medians = []\n",
-    "    for result in results:\n",
-    "        medians.append(np.median(result.corrupted_scores))\n",
-    "    return medians\n",
-    "\n",
-    "ax = plt.gca()        \n",
-    "\n",
-    "fractions = [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]\n",
-    "markersize=6\n",
-    "\n",
-    "l = ax.axhline(gaussian_noise_results[0].baseline_score, linestyle='--', color='black')    \n",
-    "\n",
-    "plt.plot(fractions, as_series(gaussian_noise_results_aug), color='#dc6082', linestyle='dotted', \n",
-    "         marker='^', markersize=markersize, fillstyle='none')\n",
-    "plt.plot(fractions, as_series(gaussian_noise_results), color='#dc6082', \n",
-    "         marker='o', markersize=markersize)\n",
-    "\n",
-    "plt.plot(fractions, as_series(motion_blur_results_aug), color='#1e4052', linestyle='dotted', \n",
-    "         marker='^', markersize=markersize, fillstyle='none')\n",
-    "plt.plot(fractions, as_series(motion_blur_results), color='#1e4052', \n",
-    "         marker='o', markersize=markersize)\n",
-    "\n",
-    "plt.plot(fractions, as_series(fog_results_aug), color='#e1a677', linestyle='dotted', \n",
-    "         marker='^', markersize=markersize, fillstyle='none')\n",
-    "plt.plot(fractions, as_series(fog_results), color='#e1a677', \n",
-    "         marker='o', markersize=markersize)\n",
-    "\n",
-    "\n",
-    "ax.set_ylim((0.9, 0.999))\n",
-    "ax.tick_params(axis='both', which='major', labelsize=22)\n",
-    "ax.tick_params(axis='both', which='minor', labelsize=22)    \n",
-    "ax.set_ylabel('AUC', fontsize=24)\n",
-    "ax.set_xlabel('fraction', fontsize=24)\n",
-    "    \n",
-    "ax.legend(['clean', 'noise (aug)', 'noise', 'motion (aug)', 'motion', 'fog (aug)', 'fog'], \n",
-    "          fontsize=12)    \n",
-    "    \n",
-    "plt.tight_layout()\n",
-    "plt.gcf().set_size_inches(7, 5)\n",
-    "\n",
-    "plt.show()"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3",
-   "language": "python",
-   "name": "python3"
-  },
-  "language_info": {
-   "codemirror_mode": {
-    "name": "ipython",
-    "version": 3
-   },
-   "file_extension": ".py",
-   "mimetype": "text/x-python",
-   "name": "python",
-   "nbconvert_exporter": "python",
-   "pygments_lexer": "ipython3",
-   "version": "3.7.8"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/jenga/basis.py b/jenga/basis.py
deleted file mode 100644
index 10778ae..0000000
--- a/jenga/basis.py
+++ /dev/null
@@ -1,115 +0,0 @@
-import numpy as np
-import pandas as pd
-import tensorflow as tf
-import random
-
-from abc import ABC, abstractmethod
-from sklearn.metrics import roc_auc_score
-
-
-# Base class for binary classification tasks, including training data, test data, a baseline model and scoring
-class BinaryClassificationTask(ABC):
-
-    def __init__(self,
-                 seed,
-                 train_data,
-                 train_labels,
-                 test_data,
-                 test_labels,
-                 categorical_columns=None,
-                 numerical_columns=None,
-                 text_columns=None,
-                 is_image_data=False
-                 ):
-
-        if numerical_columns is None:
-            numerical_columns = []
-        if categorical_columns is None:
-            categorical_columns = []
-        if text_columns is None:
-            text_columns = []
-
-        # Fix random seeds for reproducibility
-        random.seed(seed)
-        np.random.seed(seed)
-        tf.set_random_seed(seed)
-
-        # Train and test data and labels
-        self.train_data = train_data
-        self.train_labels = train_labels
-        self.test_data = test_data
-        self.__test_labels = test_labels
-
-        # Information about the data (column types, etc)
-        self.categorical_columns = categorical_columns
-        self.numerical_columns = numerical_columns
-        self.text_columns = text_columns
-        self.is_image_data = is_image_data
-
-    # Abstract base method for training a baseline model on the raw data
-    @abstractmethod
-    def fit_baseline_model(self, train_data, train_labels):
-        pass
-
-    # Per default, we compute ROC AUC scores
-    def score_on_test_data(self, predicted_label_probabilities):
-        return roc_auc_score(self.__test_labels, np.transpose(predicted_label_probabilities)[1])
-
-
-# Abstract base class for all data corruptions
-class DataCorruption:
-
-    # Abstract base method for corruptions, they have to return a corrupted copied of the dataframe
-    @abstractmethod
-    def transform(self, data):
-        pass
-
-    def __str__(self):
-        return f"{self.__class__.__name__}: {self.__dict__}"
-
-
-class TabularCorruption(DataCorruption):
-    def __init__(self, column, fraction, sampling = 'CAR'):
-        '''
-        Corruptions for structured data
-        Input: 
-        column:    column to perturb, string
-        fraction:   fraction of rows to corrupt, float between 0 and 1
-        sampling:   sampling mechanism for corruptions, options are completely at random ('CAR'),
-                     at random ('AR'), not at random ('NAR')
-        '''
-        self.column = column
-        self.fraction = fraction
-        self.sampling = sampling
-    
-    def get_dtype(self, df):
-        numeric_cols = [c for c in df.columns if pd.api.types.is_numeric_dtype(df[c])]
-        non_numeric_cols = [c for c in df.columns if c not in numeric_cols]
-        return numeric_cols, non_numeric_cols
-
-    def sample_rows(self, data):
-
-        # Completely At Random
-        if self.sampling.endswith('CAR'):
-            rows = np.random.permutation(data.index)[:int(len(data)*self.fraction)]
-        elif self.sampling.endswith('NAR') or self.sampling.endswith('AR'):
-            n_values_to_discard = int(len(data) * min(self.fraction, 1.0))
-            perc_lower_start = np.random.randint(0, len(data) - n_values_to_discard)
-            perc_idx = range(perc_lower_start, perc_lower_start + n_values_to_discard)
-            
-            # Not At Random
-            if self.sampling.endswith('NAR'):
-                # pick a random percentile of values in this column
-                rows = data[self.column].sort_values().iloc[perc_idx].index
-
-            # At Random
-            elif self.sampling.endswith('AR'):
-                depends_on_col = np.random.choice(list(set(data.columns) - {self.column}))
-                # pick a random percentile of values in other column
-                rows = data[depends_on_col].sort_values().iloc[perc_idx].index
-
-        else:
-            ValueError('sampling type not recognized')
-
-        return rows
-
diff --git a/jenga/evaluation/corruption_impact.py b/jenga/evaluation/corruption_impact.py
deleted file mode 100644
index 63c78a3..0000000
--- a/jenga/evaluation/corruption_impact.py
+++ /dev/null
@@ -1,59 +0,0 @@
-class ValidationResult:
-
-    def __init__(self, corruption, baseline_score, corrupted_scores):
-        self.corruption = corruption
-        self.baseline_score = baseline_score
-        self.corrupted_scores = corrupted_scores
-
-
-# Evaluate the impact of one or more data corruption on the prediction quality of a model;
-# applies the corruptions repeatedly to copies of the test data
-# and computes the model's prediction quality for afterwards
-class CorruptionImpactEvaluator:
-
-    def __init__(self, task):
-        self.__task = task
-
-    def evaluate(self, model, num_repetitions, *corruptions):
-
-        if not self.__task.is_image_data:
-            test_data_copy = self.__task.test_data.copy(deep=True)
-        else:
-            test_data_copy = self.__task.test_data.copy()
-
-        baseline_predictions = model.predict_proba(test_data_copy)
-        baseline_score = self.__task.score_on_test_data(baseline_predictions)
-
-        results = []
-
-        num_results = len(corruptions) * num_repetitions
-
-        current_run = 0
-        import time
-        t = time.process_time()
-
-        # Evaluate each specified corruption
-        for corruption in corruptions:
-            corrupted_scores = []
-            # Repeatedly
-            for _ in range(0, num_repetitions):
-
-                if not self.__task.is_image_data:
-                    test_data_copy = self.__task.test_data.copy(deep=True)
-                else:
-                    test_data_copy = self.__task.test_data.copy()
-
-                corrupted_data = corruption.transform(test_data_copy)
-
-                corrupted_predictions = model.predict_proba(corrupted_data)
-                corrupted_score = self.__task.score_on_test_data(corrupted_predictions)
-
-                corrupted_scores.append(corrupted_score)
-
-                if current_run % 10 == 0:
-                    print(f"{current_run}/{num_results} ({time.process_time() - t})")
-                current_run += 1
-
-            results.append(ValidationResult(corruption, baseline_score, corrupted_scores))
-
-        return results
diff --git a/jenga/tasks/income.py b/jenga/tasks/income.py
deleted file mode 100644
index 5f47b0d..0000000
--- a/jenga/tasks/income.py
+++ /dev/null
@@ -1,70 +0,0 @@
-import pandas as pd
-import numpy as np
-
-from sklearn.model_selection import train_test_split
-from sklearn.preprocessing import OneHotEncoder, StandardScaler
-from sklearn.compose import ColumnTransformer
-from sklearn.linear_model import SGDClassifier
-from sklearn.model_selection import GridSearchCV
-from sklearn.pipeline import Pipeline
-from sklearn.impute import SimpleImputer
-
-from jenga.basis import BinaryClassificationTask
-
-
-# Predict whether a person has high or low income based on demographic and financial attributes
-class IncomeEstimationTask(BinaryClassificationTask):
-
-    def __init__(self, seed, ignore_incomplete_records_for_training=False):
-
-        columns = ['workclass', 'occupation', 'marital_status', 'education', 'hours_per_week', 'age']
-        all_data = pd.read_csv('data/income/adult.csv', na_values='?')
-
-        train_split, test_split = train_test_split(all_data, test_size=0.2)
-
-        if ignore_incomplete_records_for_training:
-            train_split = train_split.dropna()
-
-        train_data = train_split[columns]
-        train_labels = np.array(train_split['class'] == '>50K')
-
-        test_data = test_split[columns]
-        test_labels = np.array(test_split['class'] == '>50K')
-
-        BinaryClassificationTask.__init__(self,
-                                          seed,
-                                          train_data,
-                                          train_labels,
-                                          test_data,
-                                          test_labels,
-                                          categorical_columns=['workclass', 'occupation', 'marital_status',
-                                                               'education'],
-                                          numerical_columns=['hours_per_week', 'age']
-                                          )
-
-    def fit_baseline_model(self, train_data, train_labels):
-
-        mark_missing_and_encode = Pipeline([
-            ('mark_missing', SimpleImputer(strategy='constant', fill_value='__NA__')),
-            ('one_hot_encode', OneHotEncoder(handle_unknown='ignore'))
-        ])
-
-        feature_transformation = ColumnTransformer(transformers=[
-            ('categorical_features', mark_missing_and_encode, self.categorical_columns),
-            ('scaled_numeric', StandardScaler(), self.numerical_columns)
-        ])
-
-        param_grid = {
-            'learner__loss': ['log'],
-            'learner__penalty': ['l2', 'l1', 'elasticnet'],
-            'learner__alpha': [0.0001, 0.001, 0.01, 0.1]
-        }
-
-        pipeline = Pipeline([
-            ('features', feature_transformation),
-            ('learner', SGDClassifier(max_iter=1000))])
-
-        search = GridSearchCV(pipeline, param_grid, scoring='roc_auc', cv=5, verbose=1, n_jobs=-1)
-        model = search.fit(train_data, train_labels)
-
-        return model
diff --git a/jenga/tasks/openml.py b/jenga/tasks/openml.py
deleted file mode 100644
index 04cea9d..0000000
--- a/jenga/tasks/openml.py
+++ /dev/null
@@ -1,85 +0,0 @@
-import pandas as pd
-import numpy as np
-
-from sklearn.model_selection import train_test_split
-from sklearn.preprocessing import OneHotEncoder, StandardScaler
-from sklearn.compose import ColumnTransformer
-from sklearn.linear_model import SGDClassifier
-from sklearn.model_selection import GridSearchCV
-from sklearn.pipeline import Pipeline
-from sklearn.impute import SimpleImputer
-from sklearn.datasets import fetch_openml
-from jenga.basis import BinaryClassificationTask
-
-# some binary classification tasks from 
-# https://www.openml.org/search?q=qualities.NumberOfClasses%3A2%2520qualities.NumberOfInstances%3Alt%3B10000%2520qualities.NumberOfFeatures%3Alt%3B100&type=data
-OPENML_IDS = [1448, 40994]
-
-# Predict whether a person has high or low income based on demographic and financial attributes
-class OpenMLTask(BinaryClassificationTask):
-
-    def __init__(self, seed=0, openml_id=1448):
-        self.openml_id = openml_id
-        X, y = fetch_openml(data_id=self.openml_id, as_frame=True, return_X_y=True)
-
-        categorical_columns, numeric_columns = self._guess_dtypes(X)
-        print(f'Found {len(categorical_columns)} categorical columns: {categorical_columns}')
-        print(f'Found {len(numeric_columns)} numeric columns: {numeric_columns}')
-        
-        labels = y.unique()
-        
-        train_data, test_data, train_labels, test_labels = train_test_split(X, y, test_size=0.2)
-
-        BinaryClassificationTask.__init__(self,
-                                          seed,
-                                          train_data,
-                                          train_labels,
-                                          test_data,
-                                          test_labels,
-                                          categorical_columns=categorical_columns,
-                                          numerical_columns=numeric_columns
-                                          )
-
-    def _is_categorical(self, col, max_unique_ratio = 0.05):
-        # return len(col.value_counts()) / len(col) < max_unique_ratio 
-        return pd.api.types.is_categorical_dtype(col)
-
-    def _guess_dtypes(self, df):
-        categorical_columns = [c for c in df.columns if self._is_categorical(df[c])]
-        numeric_columns = [c for c in df.columns if pd.api.types.is_numeric_dtype(df[c]) \
-                           and c not in categorical_columns]
-        return categorical_columns, numeric_columns
-
-    def fit_baseline_model(self, train_data, train_labels):
-        
-        for col in self.categorical_columns:
-            train_data[col] = train_data[col].astype(str)
-
-        categorical_preprocessing = Pipeline([
-            ('mark_missing', SimpleImputer(strategy='constant', fill_value='__NA__')),
-            ('one_hot_encode', OneHotEncoder(handle_unknown='ignore'))
-        ])
-
-        numeric_preprocessing = Pipeline([
-            ('mark_missing', SimpleImputer(strategy='constant', fill_value=0)),
-            ('scaling',  StandardScaler())
-        ])
-
-        feature_transformation = ColumnTransformer(transformers=[
-            ('categorical_features', categorical_preprocessing, self.categorical_columns),
-            ('scaled_numeric', numeric_preprocessing, self.numerical_columns)
-        ])
-
-        param_grid = {
-            'learner__loss': ['log'],
-            'learner__alpha': [0.0001, 0.001, 0.01]
-        }
-
-        pipeline = Pipeline([
-            ('features', feature_transformation),
-            ('learner', SGDClassifier(max_iter=1000))])
-
-        search = GridSearchCV(pipeline, param_grid, scoring='roc_auc', cv=5, verbose=1, n_jobs=-1)
-        model = search.fit(train_data, train_labels)
-
-        return model
\ No newline at end of file
diff --git a/jenga/tasks/reviews.py b/jenga/tasks/reviews.py
deleted file mode 100644
index 2f1eb03..0000000
--- a/jenga/tasks/reviews.py
+++ /dev/null
@@ -1,103 +0,0 @@
-import pandas as pd
-import numpy as np
-
-from sklearn.preprocessing import OneHotEncoder, label_binarize, StandardScaler
-from sklearn.compose import ColumnTransformer
-from sklearn.linear_model import SGDClassifier
-from sklearn.model_selection import GridSearchCV
-from sklearn.feature_extraction.text import HashingVectorizer
-from sklearn.pipeline import Pipeline
-
-from jenga.basis import BinaryClassificationTask
-
-
-# Predict whether a video game review is considered helpful or not
-class VideogameReviewsTask(BinaryClassificationTask):
-
-    def __init__(self, seed):
-        columns = ['marketplace', 'customer_id', 'review_id', 'product_id', 'product_parent',
-                   'product_title', 'product_category', 'star_rating', 'helpful_votes',
-                   'total_votes', 'vine', 'verified_purchase', 'review_headline', 'review_body',
-                   'review_date']
-        dtypes = {
-            'marketplace': str,
-            'customer_id': str,
-            'review_id': str,
-            'product_id': str,
-            'product_parent': str,
-            'product_title': str,
-            'product_category': str,
-            'star_rating': np.int32,
-            'helpful_votes': np.int32,
-            'total_votes': np.int32,
-            'vine': str,
-            'verified_purchase': str,
-            'review_headline': str,
-            'review_body': str,
-            'review_date': str
-        }
-
-        raw_data = pd.read_csv('data/reviews/videogames.tsv', sep='\t', names=columns, dtype=dtypes)
-        # We drop this column, the prediction task is to easy otherwise
-        raw_data = raw_data.drop(['total_votes'], axis=1)
-
-        raw_data[['product_title', 'review_headline', 'review_body']] = raw_data[
-            ['product_title', 'review_headline', 'review_body']].fillna(value='')
-        raw_data['title_and_review_text'] = raw_data.product_title + ' ' + raw_data.review_headline + \
-            ' ' + raw_data.review_body
-
-        train_data = self.__extract_data(raw_data, '2015-05-04', '2015-06-14')
-        test_data = self.__extract_data(raw_data, '2015-06-15', '2015-06-28')
-        train_labels = self.__extract_labels(raw_data, '2015-05-04', '2015-06-14')
-        test_labels = self.__extract_labels(raw_data, '2015-06-15', '2015-06-28')
-
-        BinaryClassificationTask.__init__(self,
-                                          seed,
-                                          train_data,
-                                          train_labels,
-                                          test_data,
-                                          test_labels,
-                                          categorical_columns=['marketplace', 'customer_id', 'review_id',
-                                                               'product_id', 'product_parent', 'vine',
-                                                               'verified_purchase'],
-                                          numerical_columns=['star_rating'],
-                                          text_columns=['product_title', 'review_headline', 'review_body',
-                                                        'title_and_review_text']
-                                          )
-
-    @staticmethod
-    def __extract_data(raw_data, start_date, end_date):
-        data_slice = raw_data[(raw_data.review_date >= start_date) & (raw_data.review_date <= end_date)].copy(deep=True)
-        data_slice = data_slice.drop(['helpful_votes'], axis=1)
-        return data_slice
-
-    @staticmethod
-    def __extract_labels(raw_data, start_date, end_date):
-        data_slice = raw_data[(raw_data.review_date >= start_date) & (raw_data.review_date <= end_date)].copy(deep=True)
-        labels = np.ravel(label_binarize(data_slice.helpful_votes > 0, [True, False]))
-
-        return labels
-
-    def fit_baseline_model(self, train_data, train_labels):
-
-        numerical_attributes = ['star_rating']
-        categorical_attributes = ['vine', 'verified_purchase']
-
-        feature_transformation = ColumnTransformer(transformers=[
-            ('numerical_features', StandardScaler(), numerical_attributes),
-            ('categorical_features', OneHotEncoder(handle_unknown='ignore'), categorical_attributes),
-            ('textual_features', HashingVectorizer(ngram_range=(1, 3), n_features=10000), 'title_and_review_text')
-        ], sparse_threshold=1.0)
-
-        param_grid = {
-            'learner__loss': ['log'],
-            'learner__penalty': ['l2', 'l1'],
-            'learner__alpha': [0.0001, 0.001, 0.01, 0.1]
-        }
-
-        pipeline = Pipeline([
-            ('features', feature_transformation),
-            ('learner', SGDClassifier(max_iter=1000))])
-
-        search = GridSearchCV(pipeline, param_grid, scoring='roc_auc', cv=5, n_jobs=-1)
-        return search.fit(train_data, train_labels)
diff --git a/jenga/tasks/shoes.py b/jenga/tasks/shoes.py
deleted file mode 100644
index 63f4a02..0000000
--- a/jenga/tasks/shoes.py
+++ /dev/null
@@ -1,71 +0,0 @@
-import tensorflow as tf
-import numpy as np
-from tensorflow import keras
-
-from jenga.basis import BinaryClassificationTask
-
-from keras.utils import to_categorical
-
-
-class PreprocessingDecorator:
-
-    def __init__(self, model):
-        self.model = model
-
-    def predict_proba(self, images):
-        normalized_images = images.astype('float32') / 255
-        reshaped_images = normalized_images.reshape(images.shape[0], 28, 28, 1)
-        return self.model.predict_proba(reshaped_images)
-
-
-# Distinguish images of "ankle boots" from images of "sneakers"
-class ShoeCategorizationTask(BinaryClassificationTask):
-
-    def __init__(self, seed):
-
-        sneaker_id = 7
-        ankle_boot_id = 9
-
-        fashion_mnist = keras.datasets.fashion_mnist
-        (train_images, all_train_labels), (test_images, all_test_labels) = fashion_mnist.load_data()
-
-        # AnkleBoot (class=9) vs Sneaker (class=7)
-        train_data = train_images[(all_train_labels == ankle_boot_id) | (all_train_labels == sneaker_id)]
-
-        train_labels = all_train_labels[(all_train_labels == ankle_boot_id) | (all_train_labels == sneaker_id)]
-        train_labels = np.where(train_labels == ankle_boot_id, 1, train_labels)
-        train_labels = np.where(train_labels == sneaker_id, 0, train_labels)
-
-        test_data = test_images[(all_test_labels == ankle_boot_id) | (all_test_labels == sneaker_id)]
-
-        test_labels = all_test_labels[(all_test_labels == ankle_boot_id) | (all_test_labels == sneaker_id)]
-        test_labels = np.where(test_labels == ankle_boot_id, 1, test_labels)
-        test_labels = np.where(test_labels == sneaker_id, 0, test_labels)
-
-        BinaryClassificationTask.__init__(self, seed,  train_data, train_labels, test_data, test_labels,
-                                          is_image_data=True)
-
-    def fit_baseline_model(self, images, labels):
-        model = tf.keras.Sequential()
-        model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=2, padding='same', activation='relu',
-                                         input_shape=(28, 28, 1)))
-        model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
-        model.add(tf.keras.layers.Dropout(0.3))
-        model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=2, padding='same', activation='relu'))
-        model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
-        model.add(tf.keras.layers.Dropout(0.3))
-        model.add(tf.keras.layers.Flatten())
-        model.add(tf.keras.layers.Dense(256, activation='relu'))
-        model.add(tf.keras.layers.Dropout(0.5))
-        model.add(tf.keras.layers.Dense(2, activation='softmax'))
-
-        model.compile(loss='categorical_crossentropy',
-                      optimizer='adam',
-                      metrics=['accuracy'])
-
-        normalized_images = images.astype('float32') / 255
-        reshaped_images = normalized_images.reshape(images.shape[0], 28, 28, 1)
-
-        model.fit(reshaped_images, to_categorical(labels))
-
-        return PreprocessingDecorator(model)
diff --git a/models/.gitignore b/models/.gitignore
new file mode 100644
index 0000000..5e7d273
--- /dev/null
+++ b/models/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/notebooks/.gitattributes b/notebooks/.gitattributes
new file mode 100644
index 0000000..305a9b0
--- /dev/null
+++ b/notebooks/.gitattributes
@@ -0,0 +1,2 @@
+*.ipynb filter=nbstripout
+*.ipynb diff=ipynb
diff --git a/notebooks/basic-OpenML-example.ipynb b/notebooks/basic-OpenML-example.ipynb
new file mode 100644
index 0000000..d6153e7
--- /dev/null
+++ b/notebooks/basic-OpenML-example.ipynb
@@ -0,0 +1,388 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "abandoned-pierce",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from jenga.tasks.openml import OpenMLRegressionTask, OpenMLBinaryClassificationTask, OpenMLMultiClassClassificationTask\n",
+    "from jenga.corruptions.generic import MissingValues\n",
+    "from jenga.evaluation.corruption_impact import CorruptionImpactEvaluator\n",
+    "\n",
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "yellow-friday",
+   "metadata": {},
+   "source": [
+    "## Some Helper Functions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "recovered-tunisia",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "num_repetitions = 10\n",
+    "\n",
+    "def print_result(results, metric):\n",
+    "    print(f\"\"\"\n",
+    "Score ({metric}) on \n",
+    "  clean data:     {results[0].baseline_score}\n",
+    "  corrupted data: {np.mean(results[0].corrupted_scores)}\n",
+    "\"\"\"\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "amazing-mills",
+   "metadata": {},
+   "source": [
+    "## Binary Classification"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "valuable-location",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "binary_task = OpenMLBinaryClassificationTask(1471)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "failing-carpet",
+   "metadata": {},
+   "source": [
+    "The baseline model is internally fitted on the tasks train data."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "joined-arctic",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Baseline ROC/AUC score: 0.5909610347992149\n"
+     ]
+    }
+   ],
+   "source": [
+    "binary_task_model = binary_task.fit_baseline_model()\n",
+    "\n",
+    "print(f\"Baseline ROC/AUC score: {binary_task.get_baseline_performance()}\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "interior-design",
+   "metadata": {},
+   "source": [
+    "Insert some corruptions and measure their impact."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "weighted-going",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/10 (0.072241)\n"
+     ]
+    }
+   ],
+   "source": [
+    "binary_task_evaluator = CorruptionImpactEvaluator(binary_task)\n",
+    "\n",
+    "binary_task_corruption = MissingValues(column='V3', fraction=0.5, na_value=np.nan)\n",
+    "binary_task_results = binary_task_evaluator.evaluate(binary_task_model, num_repetitions, binary_task_corruption)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "thrown-alignment",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "Score (ROC/AUC) on \n",
+      "  clean data:     0.5909610347992149\n",
+      "  corrupted data: 0.5853965450582252\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "print_result(binary_task_results, \"ROC/AUC\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "fatal-rates",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "id": "needed-quarterly",
+   "metadata": {},
+   "source": [
+    "## Mutli-Class Classification"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "owned-string",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "multi_class_task = OpenMLMultiClassClassificationTask(26)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "chicken-change",
+   "metadata": {},
+   "source": [
+    "The baseline model is internally fitted on the tasks train data."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "architectural-positive",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/usr/local/Caskroom/miniconda/base/envs/jenga/lib/python3.7/site-packages/sklearn/model_selection/_split.py:668: UserWarning: The least populated class in y has only 2 members, which is less than n_splits=5.\n",
+      "  % (min_groups, self.n_splits)), UserWarning)\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Baseline F1 score: 0.7461810988525959\n"
+     ]
+    }
+   ],
+   "source": [
+    "multi_class_task_model = multi_class_task.fit_baseline_model()\n",
+    "\n",
+    "print(f\"Baseline F1 score: {multi_class_task.get_baseline_performance()}\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "injured-officer",
+   "metadata": {},
+   "source": [
+    "Insert some corruptions and measure their impact."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "productive-medium",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/10 (0.019579999999999487)\n"
+     ]
+    }
+   ],
+   "source": [
+    "multi_class_task_evaluator = CorruptionImpactEvaluator(multi_class_task)\n",
+    "\n",
+    "multi_class_task_corruption = MissingValues(column='parents', fraction=0.4, na_value=np.nan)\n",
+    "multi_class_task_results = multi_class_task_evaluator.evaluate(multi_class_task_model, num_repetitions, multi_class_task_corruption)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "filled-bible",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "Score (F1) on \n",
+      "  clean data:     0.7461810988525959\n",
+      "  corrupted data: 0.6857573065971131\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "print_result(multi_class_task_results, \"F1\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "weird-warren",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "id": "alpine-might",
+   "metadata": {},
+   "source": [
+    "## Regression"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "finite-district",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "regression = OpenMLRegressionTask(42545)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "military-present",
+   "metadata": {},
+   "source": [
+    "The baseline model is internally fitted on the tasks train data."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "residential-south",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Baseline MSE score: 994.9218977535381\n"
+     ]
+    }
+   ],
+   "source": [
+    "regression_model = regression.fit_baseline_model()\n",
+    "\n",
+    "print(f\"Baseline MSE score: {regression.get_baseline_performance()}\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "wanted-newman",
+   "metadata": {},
+   "source": [
+    "Insert some corruptions and measure their impact."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "id": "distant-tribune",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/10 (0.008453999999999517)\n"
+     ]
+    }
+   ],
+   "source": [
+    "regression_evaluator = CorruptionImpactEvaluator(regression)\n",
+    "\n",
+    "regression_corruption = MissingValues(column='Material', fraction=0.3, na_value=np.nan)\n",
+    "regression_results = regression_evaluator.evaluate(regression_model, num_repetitions, regression_corruption)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "id": "wicked-throat",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "Score (MSE) on \n",
+      "  clean data:     994.9218977535381\n",
+      "  corrupted data: 1106.604385314484\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "print_result(regression_results, \"MSE\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "supposed-electronics",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/basic-example-siks-lecture.ipynb b/notebooks/basic-example-siks-lecture.ipynb
similarity index 66%
rename from basic-example-siks-lecture.ipynb
rename to notebooks/basic-example-siks-lecture.ipynb
index f8ce88b..753b9ee 100644
--- a/basic-example-siks-lecture.ipynb
+++ b/notebooks/basic-example-siks-lecture.ipynb
@@ -74,52 +74,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>22582</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Sales</td>\n",
+       "      <th>25373</th>\n",
+       "      <td>Self-emp-inc</td>\n",
+       "      <td>Craft-repair</td>\n",
        "      <td>Never-married</td>\n",
-       "      <td>11th</td>\n",
-       "      <td>16</td>\n",
-       "      <td>17</td>\n",
+       "      <td>Bachelors</td>\n",
+       "      <td>20</td>\n",
+       "      <td>38</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15224</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
-       "      <td>Never-married</td>\n",
+       "      <th>8853</th>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>Widowed</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>48</td>\n",
-       "      <td>34</td>\n",
+       "      <td>12</td>\n",
+       "      <td>68</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12360</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
-       "      <td>Widowed</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>64</td>\n",
+       "      <th>21978</th>\n",
+       "      <td>Local-gov</td>\n",
+       "      <td>Prof-specialty</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Bachelors</td>\n",
+       "      <td>35</td>\n",
+       "      <td>41</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2959</td>\n",
-       "      <td>Self-emp-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
+       "      <th>6923</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Tech-support</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>10th</td>\n",
-       "      <td>80</td>\n",
-       "      <td>48</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>45</td>\n",
+       "      <td>30</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5076</td>\n",
-       "      <td>Federal-gov</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Never-married</td>\n",
+       "      <th>14401</th>\n",
+       "      <td>Self-emp-not-inc</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Divorced</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>32</td>\n",
-       "      <td>32</td>\n",
+       "      <td>70</td>\n",
+       "      <td>37</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -128,49 +128,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12682</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
+       "      <th>4986</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Other-service</td>\n",
        "      <td>Never-married</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>35</td>\n",
+       "      <td>12th</td>\n",
+       "      <td>30</td>\n",
        "      <td>19</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10553</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
-       "      <td>40</td>\n",
+       "      <th>10316</th>\n",
+       "      <td>State-gov</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>Masters</td>\n",
+       "      <td>35</td>\n",
        "      <td>40</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15135</td>\n",
+       "      <th>4348</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
+       "      <td>Handlers-cleaners</td>\n",
+       "      <td>Divorced</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>84</td>\n",
        "      <td>40</td>\n",
-       "      <td>47</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>25392</td>\n",
-       "      <td>Local-gov</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <th>9115</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Exec-managerial</td>\n",
        "      <td>Divorced</td>\n",
-       "      <td>Masters</td>\n",
+       "      <td>Bachelors</td>\n",
        "      <td>40</td>\n",
-       "      <td>57</td>\n",
+       "      <td>38</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2500</td>\n",
+       "      <th>9542</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
-       "      <td>Never-married</td>\n",
+       "      <td>Other-service</td>\n",
+       "      <td>Divorced</td>\n",
        "      <td>Some-college</td>\n",
        "      <td>40</td>\n",
-       "      <td>27</td>\n",
+       "      <td>47</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -178,31 +178,31 @@
        "</div>"
       ],
       "text/plain": [
-       "          workclass         occupation      marital_status     education  \\\n",
-       "22582       Private              Sales       Never-married          11th   \n",
-       "15224       Private       Adm-clerical       Never-married       HS-grad   \n",
-       "12360       Private       Adm-clerical             Widowed  Some-college   \n",
-       "2959   Self-emp-inc    Farming-fishing  Married-civ-spouse          10th   \n",
-       "5076    Federal-gov      Other-service       Never-married       HS-grad   \n",
-       "...             ...                ...                 ...           ...   \n",
-       "12682       Private       Adm-clerical       Never-married       HS-grad   \n",
-       "10553       Private      Other-service  Married-civ-spouse     Bachelors   \n",
-       "15135       Private  Machine-op-inspct  Married-civ-spouse       HS-grad   \n",
-       "25392     Local-gov      Other-service            Divorced       Masters   \n",
-       "2500        Private       Adm-clerical       Never-married  Some-college   \n",
+       "              workclass         occupation      marital_status     education  \\\n",
+       "25373      Self-emp-inc       Craft-repair       Never-married     Bachelors   \n",
+       "8853                NaN                NaN             Widowed       HS-grad   \n",
+       "21978         Local-gov     Prof-specialty  Married-civ-spouse     Bachelors   \n",
+       "6923            Private       Tech-support  Married-civ-spouse  Some-college   \n",
+       "14401  Self-emp-not-inc    Exec-managerial            Divorced       HS-grad   \n",
+       "...                 ...                ...                 ...           ...   \n",
+       "4986        Federal-gov      Other-service       Never-married          12th   \n",
+       "10316         State-gov    Exec-managerial       Never-married       Masters   \n",
+       "4348            Private  Handlers-cleaners            Divorced  Some-college   \n",
+       "9115            Private    Exec-managerial            Divorced     Bachelors   \n",
+       "9542            Private      Other-service            Divorced  Some-college   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "22582              16   17  \n",
-       "15224              48   34  \n",
-       "12360              40   64  \n",
-       "2959               80   48  \n",
-       "5076               32   32  \n",
+       "25373              20   38  \n",
+       "8853               12   68  \n",
+       "21978              35   41  \n",
+       "6923               45   30  \n",
+       "14401              70   37  \n",
        "...               ...  ...  \n",
-       "12682              35   19  \n",
-       "10553              40   40  \n",
-       "15135              40   47  \n",
-       "25392              40   57  \n",
-       "2500               40   27  \n",
+       "4986               30   19  \n",
+       "10316              35   40  \n",
+       "4348               84   40  \n",
+       "9115               40   38  \n",
+       "9542               40   47  \n",
        "\n",
        "[26048 rows x 6 columns]"
       ]
@@ -229,26 +229,9 @@
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
-      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:    3.4s\n",
-      "[Parallel(n_jobs=-1)]: Done  60 out of  60 | elapsed:    3.9s finished\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "model = task.fit_baseline_model(task.train_data,task.train_labels)"
+    "model = task.fit_baseline_model()"
    ]
   },
   {
@@ -259,7 +242,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the test data is 0.8799448422970204'"
+       "'The ROC AUC score on the test data is 0.8731939181182589'"
       ]
      },
      "execution_count": 5,
@@ -268,9 +251,7 @@
     }
    ],
    "source": [
-    "y_pred = model.predict_proba(task.test_data)\n",
-    "\n",
-    "f\"The ROC AUC score on the test data is {task.score_on_test_data(y_pred)}\""
+    "f\"The ROC AUC score on the test data is {task.get_baseline_performance()}\""
    ]
   },
   {
@@ -316,103 +297,103 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>8917</td>\n",
+       "      <th>30835</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>47</td>\n",
+       "      <td>Assoc-voc</td>\n",
+       "      <td>38</td>\n",
+       "      <td>45</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>20837</td>\n",
-       "      <td>Local-gov</td>\n",
-       "      <td>Exec-managerial</td>\n",
+       "      <th>23857</th>\n",
+       "      <td>State-gov</td>\n",
+       "      <td>Protective-serv</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>40</td>\n",
-       "      <td>58</td>\n",
+       "      <td>42</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17361</td>\n",
+       "      <th>251</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Tech-support</td>\n",
-       "      <td>Never-married</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>Bachelors</td>\n",
        "      <td>40</td>\n",
-       "      <td>29</td>\n",
+       "      <td>42</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2954</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Never-married</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>26</td>\n",
+       "      <th>20208</th>\n",
+       "      <td>Self-emp-inc</td>\n",
+       "      <td>Sales</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Bachelors</td>\n",
+       "      <td>65</td>\n",
+       "      <td>33</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>21803</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>Never-married</td>\n",
+       "      <th>15120</th>\n",
+       "      <td>State-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>22</td>\n",
+       "      <td>38</td>\n",
+       "      <td>31</td>\n",
        "    </tr>\n",
        "    <tr>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
-       "      <td>...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>22218</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>43</td>\n",
-       "      <td>46</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>23194</td>\n",
-       "      <td>State-gov</td>\n",
-       "      <td>Prof-specialty</td>\n",
+       "      <th>22279</th>\n",
+       "      <td>Self-emp-inc</td>\n",
+       "      <td>Farming-fishing</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Doctorate</td>\n",
-       "      <td>45</td>\n",
-       "      <td>37</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>40</td>\n",
+       "      <td>40</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>27052</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
+       "      <th>4736</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Exec-managerial</td>\n",
        "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>56</td>\n",
-       "      <td>47</td>\n",
+       "      <td>84</td>\n",
+       "      <td>25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11722</td>\n",
-       "      <td>State-gov</td>\n",
+       "      <th>8083</th>\n",
+       "      <td>Private</td>\n",
        "      <td>Other-service</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>40</td>\n",
        "      <td>40</td>\n",
-       "      <td>46</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>26091</td>\n",
+       "      <th>11862</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Tech-support</td>\n",
+       "      <td>Handlers-cleaners</td>\n",
        "      <td>Never-married</td>\n",
-       "      <td>Bachelors</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>40</td>\n",
+       "      <td>23</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>25025</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Machine-op-inspct</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>7th-8th</td>\n",
        "      <td>40</td>\n",
-       "      <td>27</td>\n",
+       "      <td>60</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -420,31 +401,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation      marital_status     education  \\\n",
-       "8917            Private       Craft-repair  Married-civ-spouse       HS-grad   \n",
-       "20837         Local-gov    Exec-managerial  Married-civ-spouse     Bachelors   \n",
-       "17361           Private       Tech-support       Never-married     Bachelors   \n",
-       "2954            Private  Machine-op-inspct       Never-married       HS-grad   \n",
-       "21803               NaN                NaN       Never-married  Some-college   \n",
-       "...                 ...                ...                 ...           ...   \n",
-       "22218           Private       Adm-clerical            Divorced       HS-grad   \n",
-       "23194         State-gov     Prof-specialty  Married-civ-spouse     Doctorate   \n",
-       "27052  Self-emp-not-inc    Farming-fishing  Married-civ-spouse       HS-grad   \n",
-       "11722         State-gov      Other-service  Married-civ-spouse       HS-grad   \n",
-       "26091           Private       Tech-support       Never-married     Bachelors   \n",
+       "          workclass         occupation      marital_status     education  \\\n",
+       "30835       Private       Craft-repair  Married-civ-spouse     Assoc-voc   \n",
+       "23857     State-gov    Protective-serv  Married-civ-spouse  Some-college   \n",
+       "251         Private       Adm-clerical  Married-civ-spouse     Bachelors   \n",
+       "20208  Self-emp-inc              Sales  Married-civ-spouse     Bachelors   \n",
+       "15120     State-gov       Adm-clerical  Married-civ-spouse  Some-college   \n",
+       "...             ...                ...                 ...           ...   \n",
+       "22279  Self-emp-inc    Farming-fishing  Married-civ-spouse  Some-college   \n",
+       "4736        Private    Exec-managerial  Married-civ-spouse       HS-grad   \n",
+       "8083        Private      Other-service  Married-civ-spouse  Some-college   \n",
+       "11862       Private  Handlers-cleaners       Never-married       HS-grad   \n",
+       "25025       Private  Machine-op-inspct  Married-civ-spouse       7th-8th   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "8917               40   47  \n",
-       "20837              40   58  \n",
-       "17361              40   29  \n",
-       "2954               40   26  \n",
-       "21803              40   22  \n",
+       "30835              38   45  \n",
+       "23857              40   42  \n",
+       "251                40   42  \n",
+       "20208              65   33  \n",
+       "15120              38   31  \n",
        "...               ...  ...  \n",
-       "22218              43   46  \n",
-       "23194              45   37  \n",
-       "27052              56   47  \n",
-       "11722              40   46  \n",
-       "26091              40   27  \n",
+       "22279              40   40  \n",
+       "4736               84   25  \n",
+       "8083               40   40  \n",
+       "11862              40   23  \n",
+       "25025              40   60  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -477,7 +458,7 @@
    "source": [
     "from jenga.corruptions.generic import MissingValues\n",
     "\n",
-    "marital_status_corruption = MissingValues(column='marital_status', fraction=0.99, na_value='BROKEN')\n"
+    "marital_status_corruption = MissingValues(column='marital_status', fraction=0.99, na_value='BROKEN')"
    ]
   },
   {
@@ -516,52 +497,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>8917</td>\n",
+       "      <th>30835</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>47</td>\n",
+       "      <td>Assoc-voc</td>\n",
+       "      <td>38</td>\n",
+       "      <td>45</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>20837</td>\n",
-       "      <td>Local-gov</td>\n",
-       "      <td>Exec-managerial</td>\n",
+       "      <th>23857</th>\n",
+       "      <td>State-gov</td>\n",
+       "      <td>Protective-serv</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>Bachelors</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>40</td>\n",
-       "      <td>58</td>\n",
+       "      <td>42</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17361</td>\n",
+       "      <th>251</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Tech-support</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>BROKEN</td>\n",
        "      <td>Bachelors</td>\n",
        "      <td>40</td>\n",
-       "      <td>29</td>\n",
+       "      <td>42</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2954</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
+       "      <th>20208</th>\n",
+       "      <td>Self-emp-inc</td>\n",
+       "      <td>Sales</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>26</td>\n",
+       "      <td>Bachelors</td>\n",
+       "      <td>65</td>\n",
+       "      <td>33</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>21803</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>NaN</td>\n",
+       "      <th>15120</th>\n",
+       "      <td>State-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>BROKEN</td>\n",
        "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>22</td>\n",
+       "      <td>38</td>\n",
+       "      <td>31</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -570,49 +551,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>22218</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Adm-clerical</td>\n",
+       "      <th>22279</th>\n",
+       "      <td>Self-emp-inc</td>\n",
+       "      <td>Farming-fishing</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>43</td>\n",
-       "      <td>46</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>40</td>\n",
+       "      <td>40</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>23194</td>\n",
-       "      <td>State-gov</td>\n",
-       "      <td>Prof-specialty</td>\n",
+       "      <th>4736</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Exec-managerial</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>Doctorate</td>\n",
-       "      <td>45</td>\n",
-       "      <td>37</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>84</td>\n",
+       "      <td>25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>27052</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
+       "      <th>8083</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Other-service</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>56</td>\n",
-       "      <td>47</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>40</td>\n",
+       "      <td>40</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11722</td>\n",
-       "      <td>State-gov</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <th>11862</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Handlers-cleaners</td>\n",
        "      <td>BROKEN</td>\n",
        "      <td>HS-grad</td>\n",
        "      <td>40</td>\n",
-       "      <td>46</td>\n",
+       "      <td>23</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>26091</td>\n",
+       "      <th>25025</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Tech-support</td>\n",
+       "      <td>Machine-op-inspct</td>\n",
        "      <td>BROKEN</td>\n",
-       "      <td>Bachelors</td>\n",
+       "      <td>7th-8th</td>\n",
        "      <td>40</td>\n",
-       "      <td>27</td>\n",
+       "      <td>60</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -620,31 +601,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation marital_status     education  \\\n",
-       "8917            Private       Craft-repair         BROKEN       HS-grad   \n",
-       "20837         Local-gov    Exec-managerial         BROKEN     Bachelors   \n",
-       "17361           Private       Tech-support         BROKEN     Bachelors   \n",
-       "2954            Private  Machine-op-inspct         BROKEN       HS-grad   \n",
-       "21803               NaN                NaN         BROKEN  Some-college   \n",
-       "...                 ...                ...            ...           ...   \n",
-       "22218           Private       Adm-clerical         BROKEN       HS-grad   \n",
-       "23194         State-gov     Prof-specialty         BROKEN     Doctorate   \n",
-       "27052  Self-emp-not-inc    Farming-fishing         BROKEN       HS-grad   \n",
-       "11722         State-gov      Other-service         BROKEN       HS-grad   \n",
-       "26091           Private       Tech-support         BROKEN     Bachelors   \n",
+       "          workclass         occupation marital_status     education  \\\n",
+       "30835       Private       Craft-repair         BROKEN     Assoc-voc   \n",
+       "23857     State-gov    Protective-serv         BROKEN  Some-college   \n",
+       "251         Private       Adm-clerical         BROKEN     Bachelors   \n",
+       "20208  Self-emp-inc              Sales         BROKEN     Bachelors   \n",
+       "15120     State-gov       Adm-clerical         BROKEN  Some-college   \n",
+       "...             ...                ...            ...           ...   \n",
+       "22279  Self-emp-inc    Farming-fishing         BROKEN  Some-college   \n",
+       "4736        Private    Exec-managerial         BROKEN       HS-grad   \n",
+       "8083        Private      Other-service         BROKEN  Some-college   \n",
+       "11862       Private  Handlers-cleaners         BROKEN       HS-grad   \n",
+       "25025       Private  Machine-op-inspct         BROKEN       7th-8th   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "8917               40   47  \n",
-       "20837              40   58  \n",
-       "17361              40   29  \n",
-       "2954               40   26  \n",
-       "21803              40   22  \n",
+       "30835              38   45  \n",
+       "23857              40   42  \n",
+       "251                40   42  \n",
+       "20208              65   33  \n",
+       "15120              38   31  \n",
        "...               ...  ...  \n",
-       "22218              43   46  \n",
-       "23194              45   37  \n",
-       "27052              56   47  \n",
-       "11722              40   46  \n",
-       "26091              40   27  \n",
+       "22279              40   40  \n",
+       "4736               84   25  \n",
+       "8083               40   40  \n",
+       "11862              40   23  \n",
+       "25025              40   60  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -667,7 +648,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the corrupted test data is 0.8045116792453368'"
+       "'The ROC AUC score on the corrupted test data is 0.8000869740922627'"
       ]
      },
      "execution_count": 9,
@@ -729,8 +710,8 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "0/20 (0.019395000000000273)\n",
-      "10/20 (0.19835700000000056)\n"
+      "0/20 (0.019917999999999658)\n",
+      "10/20 (0.21423999999999932)\n"
      ]
     }
    ],
@@ -758,16 +739,16 @@
       "MissingValues: {'column': 'marital_status', 'fraction': 0.99, 'sampling': 'MCAR', 'na_value': 'BROKEN'}\n",
       "\n",
       "     Score (AUC) on \n",
-      "      clean data:     0.8799448422970204\n",
-      "      corrupted data: 0.8038035552511928\n",
+      "      clean data:     0.8731939181182589\n",
+      "      corrupted data: 0.7999927909174862\n",
       "     \n",
       "\n",
       "\n",
       "MissingValues: {'column': 'age', 'fraction': 0.05, 'sampling': 'MCAR', 'na_value': -999}\n",
       "\n",
       "     Score (AUC) on \n",
-      "      clean data:     0.8799448422970204\n",
-      "      corrupted data: 0.843399127066248\n",
+      "      clean data:     0.8731939181182589\n",
+      "      corrupted data: 0.8366003181298348\n",
       "     \n",
       "\n",
       "\n"
@@ -803,7 +784,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/basic-example.ipynb b/notebooks/basic-example.ipynb
similarity index 79%
rename from basic-example.ipynb
rename to notebooks/basic-example.ipynb
index 5162cbe..38439d5 100644
--- a/basic-example.ipynb
+++ b/notebooks/basic-example.ipynb
@@ -38,26 +38,9 @@
    "cell_type": "code",
    "execution_count": 3,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
-      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:    3.5s\n",
-      "[Parallel(n_jobs=-1)]: Done  60 out of  60 | elapsed:    4.1s finished\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "model = task.fit_baseline_model(task.train_data,task.train_labels)"
+    "model = task.fit_baseline_model()"
    ]
   },
   {
@@ -112,7 +95,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "0/10 (0.02054599999999951)\n"
+      "0/10 (0.01721900000000076)\n"
      ]
     }
    ],
@@ -139,8 +122,8 @@
      "text": [
       "\n",
       " Score (AUC) on \n",
-      "  clean data:     0.8844845010714099\n",
-      "  corrupted data: 0.847293626394453\n",
+      "  clean data:     0.8754131881535541\n",
+      "  corrupted data: 0.8386533268314794\n",
       " \n"
      ]
     }
@@ -170,7 +153,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/corruptions.ipynb b/notebooks/corruptions.ipynb
similarity index 73%
rename from corruptions.ipynb
rename to notebooks/corruptions.ipynb
index c3eb5dc..ecafbdf 100644
--- a/corruptions.ipynb
+++ b/notebooks/corruptions.ipynb
@@ -59,9 +59,7 @@
   {
    "cell_type": "code",
    "execution_count": 3,
-   "metadata": {
-    "scrolled": true
-   },
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -94,88 +92,88 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
+       "      <th>0</th>\n",
        "      <td>0.00</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>c</td>\n",
-       "      <td>c</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
+       "      <td>a</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
+       "      <th>1</th>\n",
        "      <td>0.05</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>a</td>\n",
-       "      <td>a</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
+       "      <th>2</th>\n",
        "      <td>0.10</td>\n",
-       "      <td>a</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>NaN</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
+       "      <th>4</th>\n",
        "      <td>0.20</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>c</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
+       "      <th>6</th>\n",
        "      <td>0.30</td>\n",
-       "      <td>c</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>c</td>\n",
+       "      <td>a</td>\n",
+       "      <td>a</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
+       "      <th>7</th>\n",
        "      <td>0.35</td>\n",
-       "      <td>b</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>foo</td>\n",
        "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
+       "      <th>8</th>\n",
        "      <td>0.40</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>a</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
        "      <td>c</td>\n",
        "      <td>bah</td>\n",
@@ -184,93 +182,93 @@
        "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
+       "      <th>10</th>\n",
        "      <td>0.50</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>c</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
+       "      <th>11</th>\n",
        "      <td>0.55</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
+       "      <th>12</th>\n",
        "      <td>0.60</td>\n",
        "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
        "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>13</td>\n",
+       "      <th>13</th>\n",
        "      <td>0.65</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
+       "      <td>foo</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
+       "      <th>14</th>\n",
        "      <td>0.70</td>\n",
        "      <td>b</td>\n",
        "      <td>foo</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>NaN</td>\n",
        "      <td>b</td>\n",
+       "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
+       "      <th>15</th>\n",
        "      <td>0.75</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>c</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
+       "      <th>16</th>\n",
        "      <td>0.80</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>bah</td>\n",
-       "      <td>b</td>\n",
-       "      <td>b</td>\n",
        "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17</td>\n",
+       "      <th>17</th>\n",
        "      <td>0.85</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>a</td>\n",
-       "      <td>a</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
+       "      <th>18</th>\n",
        "      <td>0.90</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
+       "      <td>a</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>19</td>\n",
+       "      <th>19</th>\n",
        "      <td>0.95</td>\n",
        "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
@@ -279,26 +277,26 @@
       ],
       "text/plain": [
        "       A  B    C B_MCAR B_MAR B_MNAR\n",
-       "0   0.00  c  foo      c     c    NaN\n",
-       "1   0.05  a  foo      a     a      a\n",
-       "2   0.10  a  bah    NaN     a    NaN\n",
-       "3   0.15  c  foo    NaN     c    NaN\n",
-       "4   0.20  c  foo      c     c    NaN\n",
-       "5   0.25  a  foo    NaN   NaN    NaN\n",
-       "6   0.30  c  foo      c   NaN      c\n",
-       "7   0.35  b  bah    NaN   NaN      b\n",
-       "8   0.40  a  foo      a   NaN      a\n",
+       "0   0.00  a  bah    NaN     a      a\n",
+       "1   0.05  c  bah      c   NaN      c\n",
+       "2   0.10  b  bah    NaN   NaN    NaN\n",
+       "3   0.15  c  foo    NaN     c      c\n",
+       "4   0.20  c  foo      c     c      c\n",
+       "5   0.25  a  bah    NaN   NaN    NaN\n",
+       "6   0.30  a  foo      a     a    NaN\n",
+       "7   0.35  c  foo    NaN     c    NaN\n",
+       "8   0.40  b  bah      b   NaN    NaN\n",
        "9   0.45  c  bah      c   NaN      c\n",
-       "10  0.50  c  foo      c   NaN      c\n",
-       "11  0.55  a  foo    NaN   NaN      a\n",
-       "12  0.60  c  bah    NaN   NaN      c\n",
-       "13  0.65  a  bah      a   NaN      a\n",
-       "14  0.70  b  foo    NaN   NaN      b\n",
-       "15  0.75  c  foo    NaN     c    NaN\n",
-       "16  0.80  b  bah      b     b    NaN\n",
-       "17  0.85  a  foo      a     a    NaN\n",
-       "18  0.90  b  foo    NaN     b    NaN\n",
-       "19  0.95  b  bah    NaN     b    NaN"
+       "10  0.50  b  bah    NaN   NaN    NaN\n",
+       "11  0.55  c  bah      c   NaN      c\n",
+       "12  0.60  c  foo      c     c      c\n",
+       "13  0.65  c  foo    NaN     c      c\n",
+       "14  0.70  b  foo      b     b    NaN\n",
+       "15  0.75  b  bah    NaN   NaN    NaN\n",
+       "16  0.80  a  bah    NaN   NaN      a\n",
+       "17  0.85  c  bah      c     c      c\n",
+       "18  0.90  a  foo      a     a    NaN\n",
+       "19  0.95  b  bah    NaN   NaN    NaN"
       ]
      },
      "execution_count": 3,
@@ -328,9 +326,7 @@
   {
    "cell_type": "code",
    "execution_count": 4,
-   "metadata": {
-    "scrolled": true
-   },
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -363,116 +359,107 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
-       "      <td>0.05</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <th>0</th>\n",
+       "      <td>0.00</td>\n",
        "      <td>a</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>a</td>\n",
        "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
-       "      <td>0.10</td>\n",
+       "      <th>16</th>\n",
+       "      <td>0.80</td>\n",
        "      <td>a</td>\n",
        "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
        "      <td>NaN</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>17</td>\n",
-       "      <td>0.85</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>a</td>\n",
        "      <td>a</td>\n",
-       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
-       "      <td>0.40</td>\n",
+       "      <th>6</th>\n",
+       "      <td>0.30</td>\n",
        "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>a</td>\n",
-       "      <td>NaN</td>\n",
        "      <td>a</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
-       "      <td>0.55</td>\n",
+       "      <th>18</th>\n",
+       "      <td>0.90</td>\n",
        "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>NaN</td>\n",
-       "      <td>NaN</td>\n",
        "      <td>a</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>13</td>\n",
-       "      <td>0.65</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
        "      <td>a</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>19</td>\n",
-       "      <td>0.95</td>\n",
+       "      <th>15</th>\n",
+       "      <td>0.75</td>\n",
        "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
-       "      <td>0.80</td>\n",
+       "      <th>14</th>\n",
+       "      <td>0.70</td>\n",
        "      <td>b</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>foo</td>\n",
        "      <td>b</td>\n",
        "      <td>b</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
-       "      <td>0.35</td>\n",
+       "      <th>10</th>\n",
+       "      <td>0.50</td>\n",
        "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
-       "      <td>0.90</td>\n",
+       "      <th>19</th>\n",
+       "      <td>0.95</td>\n",
        "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>b</td>\n",
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
-       "      <td>0.70</td>\n",
+       "      <th>2</th>\n",
+       "      <td>0.10</td>\n",
        "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
        "      <td>NaN</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>8</th>\n",
+       "      <td>0.40</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
        "      <td>b</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
-       "      <td>0.75</td>\n",
+       "      <th>7</th>\n",
+       "      <td>0.35</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>NaN</td>\n",
@@ -480,61 +467,70 @@
        "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
-       "      <td>0.00</td>\n",
+       "      <th>4</th>\n",
+       "      <td>0.20</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>c</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
-       "      <td>0.50</td>\n",
+       "      <th>11</th>\n",
+       "      <td>0.55</td>\n",
        "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
        "      <td>c</td>\n",
        "      <td>NaN</td>\n",
        "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
-       "      <td>0.30</td>\n",
+       "      <th>12</th>\n",
+       "      <td>0.60</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
-       "      <td>0.20</td>\n",
+       "      <th>13</th>\n",
+       "      <td>0.65</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>c</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>NaN</td>\n",
        "      <td>c</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
-       "      <td>0.60</td>\n",
+       "      <th>1</th>\n",
+       "      <td>0.05</td>\n",
        "      <td>c</td>\n",
        "      <td>bah</td>\n",
-       "      <td>NaN</td>\n",
+       "      <td>c</td>\n",
        "      <td>NaN</td>\n",
        "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>17</th>\n",
+       "      <td>0.85</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
+       "      <td>c</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
        "      <td>c</td>\n",
        "      <td>bah</td>\n",
@@ -548,25 +544,25 @@
       ],
       "text/plain": [
        "       A  B    C B_MCAR B_MAR B_MNAR\n",
-       "1   0.05  a  foo      a     a      a\n",
-       "2   0.10  a  bah    NaN     a    NaN\n",
-       "17  0.85  a  foo      a     a    NaN\n",
-       "5   0.25  a  foo    NaN   NaN    NaN\n",
-       "8   0.40  a  foo      a   NaN      a\n",
-       "11  0.55  a  foo    NaN   NaN      a\n",
-       "13  0.65  a  bah      a   NaN      a\n",
-       "19  0.95  b  bah    NaN     b    NaN\n",
-       "16  0.80  b  bah      b     b    NaN\n",
-       "7   0.35  b  bah    NaN   NaN      b\n",
-       "18  0.90  b  foo    NaN     b    NaN\n",
-       "14  0.70  b  foo    NaN   NaN      b\n",
-       "15  0.75  c  foo    NaN     c    NaN\n",
-       "0   0.00  c  foo      c     c    NaN\n",
-       "10  0.50  c  foo      c   NaN      c\n",
-       "6   0.30  c  foo      c   NaN      c\n",
-       "4   0.20  c  foo      c     c    NaN\n",
-       "3   0.15  c  foo    NaN     c    NaN\n",
-       "12  0.60  c  bah    NaN   NaN      c\n",
+       "0   0.00  a  bah    NaN     a      a\n",
+       "16  0.80  a  bah    NaN   NaN      a\n",
+       "5   0.25  a  bah    NaN   NaN    NaN\n",
+       "6   0.30  a  foo      a     a    NaN\n",
+       "18  0.90  a  foo      a     a    NaN\n",
+       "15  0.75  b  bah    NaN   NaN    NaN\n",
+       "14  0.70  b  foo      b     b    NaN\n",
+       "10  0.50  b  bah    NaN   NaN    NaN\n",
+       "19  0.95  b  bah    NaN   NaN    NaN\n",
+       "2   0.10  b  bah    NaN   NaN    NaN\n",
+       "8   0.40  b  bah      b   NaN    NaN\n",
+       "7   0.35  c  foo    NaN     c    NaN\n",
+       "4   0.20  c  foo      c     c      c\n",
+       "11  0.55  c  bah      c   NaN      c\n",
+       "12  0.60  c  foo      c     c      c\n",
+       "13  0.65  c  foo    NaN     c      c\n",
+       "3   0.15  c  foo    NaN     c      c\n",
+       "1   0.05  c  bah      c   NaN      c\n",
+       "17  0.85  c  bah      c     c      c\n",
        "9   0.45  c  bah      c   NaN      c"
       ]
      },
@@ -576,7 +572,7 @@
     }
    ],
    "source": [
-    "df.sort_values('B')\n"
+    "df.sort_values('B')"
    ]
   },
   {
@@ -624,184 +620,184 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
+       "      <th>0</th>\n",
        "      <td>0.00</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0</td>\n",
+       "      <td>0.0</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
-       "      <td>0.05</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <th>1</th>\n",
        "      <td>0.05</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
+       "      <th>2</th>\n",
        "      <td>0.10</td>\n",
        "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>0.1</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.15</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
+       "      <th>4</th>\n",
        "      <td>0.20</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>0.2</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
+       "      <th>6</th>\n",
        "      <td>0.30</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.3</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
+       "      <th>7</th>\n",
        "      <td>0.35</td>\n",
-       "      <td>b</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
+       "      <th>8</th>\n",
        "      <td>0.40</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.4</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
+       "      <th>10</th>\n",
        "      <td>0.50</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>a</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
+       "      <td>0.5</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
+       "      <th>11</th>\n",
        "      <td>0.55</td>\n",
-       "      <td>c</td>\n",
+       "      <td>a</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>0.55</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
+       "      <th>12</th>\n",
        "      <td>0.60</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>13</td>\n",
+       "      <th>13</th>\n",
        "      <td>0.65</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0.65</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
+       "      <th>14</th>\n",
        "      <td>0.70</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
+       "      <td>b</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
+       "      <th>15</th>\n",
        "      <td>0.75</td>\n",
        "      <td>a</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>0.75</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
+       "      <th>16</th>\n",
        "      <td>0.80</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
+       "      <td>0.8</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17</td>\n",
+       "      <th>17</th>\n",
        "      <td>0.85</td>\n",
        "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
+       "      <th>18</th>\n",
        "      <td>0.90</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
+       "      <td>c</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>19</td>\n",
+       "      <th>19</th>\n",
        "      <td>0.95</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>0.95</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>a</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -809,26 +805,26 @@
       ],
       "text/plain": [
        "       A  B    C C_swapped_MAR C_swapped_MCAR A_swapped_MCAR\n",
-       "0   0.00  b  foo           foo            foo              0\n",
-       "1   0.05  c  bah           bah            bah           0.05\n",
-       "2   0.10  b  foo           foo            foo            foo\n",
-       "3   0.15  a  foo           foo            foo           0.15\n",
-       "4   0.20  c  bah           bah            bah            0.2\n",
-       "5   0.25  a  bah           bah            bah           0.25\n",
-       "6   0.30  a  foo           foo            foo            0.3\n",
-       "7   0.35  b  bah           bah            bah            bah\n",
-       "8   0.40  c  foo           foo            foo            0.4\n",
-       "9   0.45  b  foo           foo            foo            foo\n",
-       "10  0.50  c  bah           bah            bah            bah\n",
-       "11  0.55  c  bah           bah            bah           0.55\n",
-       "12  0.60  a  bah           bah            bah            bah\n",
-       "13  0.65  c  foo           foo            foo           0.65\n",
-       "14  0.70  c  bah           bah            bah            bah\n",
-       "15  0.75  a  bah           bah            bah            bah\n",
-       "16  0.80  a  bah           bah            bah            bah\n",
-       "17  0.85  a  foo           foo            foo            foo\n",
-       "18  0.90  b  foo           foo            foo            foo\n",
-       "19  0.95  a  foo           foo            foo           0.95"
+       "0   0.00  a  foo           foo            foo            0.0\n",
+       "1   0.05  b  foo             b            foo              b\n",
+       "2   0.10  b  bah             b            bah            0.1\n",
+       "3   0.15  a  bah             a            bah           0.15\n",
+       "4   0.20  b  foo             b            foo              b\n",
+       "5   0.25  b  foo             b            foo           0.25\n",
+       "6   0.30  c  foo             c            foo            0.3\n",
+       "7   0.35  c  bah             c            bah              c\n",
+       "8   0.40  a  foo             a            foo            0.4\n",
+       "9   0.45  a  bah           bah            bah              a\n",
+       "10  0.50  a  bah           bah            bah            0.5\n",
+       "11  0.55  a  bah           bah            bah           0.55\n",
+       "12  0.60  c  bah           bah            bah              c\n",
+       "13  0.65  a  foo             a            foo              a\n",
+       "14  0.70  b  bah           bah            bah              b\n",
+       "15  0.75  a  bah           bah            bah           0.75\n",
+       "16  0.80  b  bah           bah            bah            0.8\n",
+       "17  0.85  a  foo           foo            foo              a\n",
+       "18  0.90  c  foo             c            foo              c\n",
+       "19  0.95  a  bah           bah            bah              a"
       ]
      },
      "execution_count": 5,
@@ -897,43 +893,43 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
+       "      <th>0</th>\n",
        "      <td>0.00</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
+       "      <th>1</th>\n",
        "      <td>0.05</td>\n",
        "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.05</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
+       "      <th>2</th>\n",
        "      <td>0.10</td>\n",
        "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.10</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
-       "      <td>c</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>0.15</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
+       "      <th>4</th>\n",
        "      <td>0.20</td>\n",
        "      <td>a</td>\n",
        "      <td>bah</td>\n",
@@ -942,138 +938,138 @@
        "      <td>0.20</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
        "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
+       "      <th>6</th>\n",
        "      <td>0.30</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.30</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
+       "      <th>7</th>\n",
        "      <td>0.35</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
+       "      <th>8</th>\n",
        "      <td>0.40</td>\n",
-       "      <td>c</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>0.40</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
        "      <td>c</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.45</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
+       "      <th>10</th>\n",
        "      <td>0.50</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.50</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
+       "      <th>11</th>\n",
        "      <td>0.55</td>\n",
-       "      <td>a</td>\n",
+       "      <td>b</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.55</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
-       "      <td>0.60</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <th>12</th>\n",
        "      <td>0.60</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>13</td>\n",
-       "      <td>0.65</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0.65</td>\n",
+       "      <td>0.60</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
-       "      <td>0.70</td>\n",
-       "      <td>a</td>\n",
+       "      <th>13</th>\n",
+       "      <td>0.65</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
+       "      <td>0.65</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>14</th>\n",
+       "      <td>0.70</td>\n",
+       "      <td>a</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.70</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
+       "      <th>15</th>\n",
        "      <td>0.75</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.75</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
+       "      <th>16</th>\n",
        "      <td>0.80</td>\n",
-       "      <td>b</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>a</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.80</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17</td>\n",
+       "      <th>17</th>\n",
+       "      <td>0.85</td>\n",
+       "      <td>a</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.85</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>18</th>\n",
+       "      <td>0.90</td>\n",
        "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
        "      <td>bah</td>\n",
-       "      <td>0.85</td>\n",
+       "      <td>0.90</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
-       "      <td>0.90</td>\n",
+       "      <th>19</th>\n",
+       "      <td>0.95</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0.90</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>19</td>\n",
-       "      <td>0.95</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>bah</td>\n",
        "      <td>0.95</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
@@ -1082,26 +1078,26 @@
       ],
       "text/plain": [
        "       A  B    C C_permuted_MAR C_permuted_MCAR  A_permuted_MCAR\n",
-       "0   0.00  a  foo            foo             foo             0.00\n",
-       "1   0.05  b  foo            foo             foo             0.05\n",
-       "2   0.10  c  bah            bah             bah             0.10\n",
-       "3   0.15  c  bah            bah             bah             0.15\n",
+       "0   0.00  c  bah            bah             bah             0.00\n",
+       "1   0.05  b  bah            bah             bah             0.05\n",
+       "2   0.10  c  foo            foo             foo             0.10\n",
+       "3   0.15  b  bah            bah             bah             0.15\n",
        "4   0.20  a  bah            bah             bah             0.20\n",
-       "5   0.25  b  foo            foo             foo             0.25\n",
-       "6   0.30  a  foo            foo             foo             0.30\n",
-       "7   0.35  c  bah            bah             bah             0.35\n",
-       "8   0.40  c  bah            bah             bah             0.40\n",
-       "9   0.45  c  foo            foo             foo             0.45\n",
-       "10  0.50  a  foo            foo             foo             0.50\n",
-       "11  0.55  a  foo            foo             foo             0.55\n",
-       "12  0.60  a  bah            bah             bah             0.60\n",
-       "13  0.65  c  foo            foo             foo             0.65\n",
-       "14  0.70  a  bah            bah             bah             0.70\n",
-       "15  0.75  b  foo            foo             foo             0.75\n",
-       "16  0.80  b  bah            bah             bah             0.80\n",
-       "17  0.85  b  bah            bah             bah             0.85\n",
-       "18  0.90  c  foo            foo             foo             0.90\n",
-       "19  0.95  c  bah            bah             bah             0.95"
+       "5   0.25  b  bah            bah             bah             0.25\n",
+       "6   0.30  c  foo            foo             foo             0.30\n",
+       "7   0.35  b  foo            foo             foo             0.35\n",
+       "8   0.40  b  bah            bah             bah             0.40\n",
+       "9   0.45  c  bah            bah             bah             0.45\n",
+       "10  0.50  a  bah            bah             bah             0.50\n",
+       "11  0.55  b  foo            foo             foo             0.55\n",
+       "12  0.60  c  foo            foo             foo             0.60\n",
+       "13  0.65  b  bah            bah             bah             0.65\n",
+       "14  0.70  a  foo            foo             foo             0.70\n",
+       "15  0.75  a  foo            foo             foo             0.75\n",
+       "16  0.80  a  foo            foo             foo             0.80\n",
+       "17  0.85  a  foo            foo             foo             0.85\n",
+       "18  0.90  b  bah            bah             bah             0.90\n",
+       "19  0.95  c  foo            foo             foo             0.95"
       ]
      },
      "execution_count": 6,
@@ -1161,164 +1157,164 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
+       "      <th>0</th>\n",
        "      <td>0.00</td>\n",
        "      <td>c</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.000000</td>\n",
-       "      <td>0.283570</td>\n",
+       "      <td>0.375077</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
+       "      <th>1</th>\n",
        "      <td>0.05</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.050000</td>\n",
-       "      <td>0.691401</td>\n",
+       "      <td>0.580530</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
+       "      <th>2</th>\n",
        "      <td>0.10</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.100000</td>\n",
        "      <td>0.100000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>0.150000</td>\n",
-       "      <td>0.150000</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>-2.427858</td>\n",
+       "      <td>0.082609</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
+       "      <th>4</th>\n",
        "      <td>0.20</td>\n",
        "      <td>b</td>\n",
        "      <td>foo</td>\n",
+       "      <td>1.114760</td>\n",
        "      <td>0.200000</td>\n",
-       "      <td>2.024498</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>-1.890320</td>\n",
-       "      <td>-1.376654</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>0.030722</td>\n",
+       "      <td>-0.635990</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
+       "      <th>6</th>\n",
        "      <td>0.30</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
-       "      <td>2.550762</td>\n",
+       "      <td>0.300000</td>\n",
        "      <td>0.300000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
+       "      <th>7</th>\n",
        "      <td>0.35</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>0.090725</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>-0.675669</td>\n",
        "      <td>0.350000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
+       "      <th>8</th>\n",
        "      <td>0.40</td>\n",
-       "      <td>b</td>\n",
+       "      <td>c</td>\n",
        "      <td>bah</td>\n",
-       "      <td>0.705082</td>\n",
-       "      <td>1.403910</td>\n",
+       "      <td>0.400000</td>\n",
+       "      <td>0.400000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
-       "      <td>b</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.450000</td>\n",
-       "      <td>0.450000</td>\n",
+       "      <td>0.083701</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
+       "      <th>10</th>\n",
        "      <td>0.50</td>\n",
-       "      <td>a</td>\n",
+       "      <td>b</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0.072846</td>\n",
-       "      <td>0.307988</td>\n",
+       "      <td>0.924160</td>\n",
+       "      <td>0.500000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
+       "      <th>11</th>\n",
        "      <td>0.55</td>\n",
-       "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>0.846132</td>\n",
-       "      <td>0.550000</td>\n",
+       "      <td>a</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>0.783916</td>\n",
+       "      <td>1.022801</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
+       "      <th>12</th>\n",
        "      <td>0.60</td>\n",
-       "      <td>c</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
-       "      <td>-0.051099</td>\n",
        "      <td>0.600000</td>\n",
+       "      <td>0.159303</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>13</td>\n",
+       "      <th>13</th>\n",
        "      <td>0.65</td>\n",
        "      <td>c</td>\n",
        "      <td>bah</td>\n",
-       "      <td>2.299479</td>\n",
-       "      <td>0.402728</td>\n",
+       "      <td>0.650000</td>\n",
+       "      <td>0.650000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
+       "      <th>14</th>\n",
        "      <td>0.70</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>0.700000</td>\n",
-       "      <td>1.109359</td>\n",
+       "      <td>-2.517584</td>\n",
+       "      <td>0.933758</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
+       "      <th>15</th>\n",
        "      <td>0.75</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>0.750000</td>\n",
-       "      <td>0.750000</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>1.328294</td>\n",
+       "      <td>0.141334</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
+       "      <th>16</th>\n",
        "      <td>0.80</td>\n",
        "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
+       "      <td>-1.188958</td>\n",
        "      <td>0.800000</td>\n",
-       "      <td>0.551603</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17</td>\n",
+       "      <th>17</th>\n",
        "      <td>0.85</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.850000</td>\n",
        "      <td>0.850000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
+       "      <th>18</th>\n",
        "      <td>0.90</td>\n",
        "      <td>c</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>1.849753</td>\n",
-       "      <td>2.357129</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>0.900000</td>\n",
+       "      <td>0.900000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>19</td>\n",
+       "      <th>19</th>\n",
        "      <td>0.95</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
-       "      <td>1.258955</td>\n",
-       "      <td>0.950000</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
+       "      <td>2.227933</td>\n",
+       "      <td>0.903568</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -1326,26 +1322,26 @@
       ],
       "text/plain": [
        "       A  B    C  A_GaussNoise_MAR  A_GaussNoise__MCAR\n",
-       "0   0.00  c  bah          0.000000            0.283570\n",
-       "1   0.05  b  foo          0.050000            0.691401\n",
-       "2   0.10  b  foo          0.100000            0.100000\n",
-       "3   0.15  c  foo          0.150000            0.150000\n",
-       "4   0.20  b  foo          0.200000            2.024498\n",
-       "5   0.25  b  foo         -1.890320           -1.376654\n",
-       "6   0.30  a  foo          2.550762            0.300000\n",
-       "7   0.35  c  bah          0.090725            0.350000\n",
-       "8   0.40  b  bah          0.705082            1.403910\n",
-       "9   0.45  b  foo          0.450000            0.450000\n",
-       "10  0.50  a  foo          0.072846            0.307988\n",
-       "11  0.55  c  bah          0.846132            0.550000\n",
-       "12  0.60  c  bah         -0.051099            0.600000\n",
-       "13  0.65  c  bah          2.299479            0.402728\n",
-       "14  0.70  b  foo          0.700000            1.109359\n",
-       "15  0.75  b  foo          0.750000            0.750000\n",
-       "16  0.80  a  foo          0.800000            0.551603\n",
-       "17  0.85  a  bah          0.850000            0.850000\n",
-       "18  0.90  c  bah          1.849753            2.357129\n",
-       "19  0.95  a  bah          1.258955            0.950000"
+       "0   0.00  c  foo          0.000000            0.375077\n",
+       "1   0.05  a  bah          0.050000            0.580530\n",
+       "2   0.10  a  foo          0.100000            0.100000\n",
+       "3   0.15  b  bah         -2.427858            0.082609\n",
+       "4   0.20  b  foo          1.114760            0.200000\n",
+       "5   0.25  a  bah          0.030722           -0.635990\n",
+       "6   0.30  c  foo          0.300000            0.300000\n",
+       "7   0.35  b  foo         -0.675669            0.350000\n",
+       "8   0.40  c  bah          0.400000            0.400000\n",
+       "9   0.45  c  foo          0.450000            0.083701\n",
+       "10  0.50  b  foo          0.924160            0.500000\n",
+       "11  0.55  a  foo          0.783916            1.022801\n",
+       "12  0.60  b  bah          0.600000            0.159303\n",
+       "13  0.65  c  bah          0.650000            0.650000\n",
+       "14  0.70  a  foo         -2.517584            0.933758\n",
+       "15  0.75  a  bah          1.328294            0.141334\n",
+       "16  0.80  a  bah         -1.188958            0.800000\n",
+       "17  0.85  c  foo          0.850000            0.850000\n",
+       "18  0.90  c  foo          0.900000            0.900000\n",
+       "19  0.95  b  foo          2.227933            0.903568"
       ]
      },
      "execution_count": 7,
@@ -1403,164 +1399,164 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
+       "      <th>0</th>\n",
        "      <td>0.00</td>\n",
        "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.00</td>\n",
        "      <td>0.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
+       "      <th>1</th>\n",
        "      <td>0.05</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>50.00</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>50.00</td>\n",
+       "      <td>0.05</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
+       "      <th>2</th>\n",
        "      <td>0.10</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>100.00</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>100.00</td>\n",
+       "      <td>10.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
        "      <td>0.15</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
-       "      <td>150.00</td>\n",
-       "      <td>150.00</td>\n",
+       "      <td>0.15</td>\n",
+       "      <td>15.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
+       "      <th>4</th>\n",
        "      <td>0.20</td>\n",
-       "      <td>a</td>\n",
+       "      <td>c</td>\n",
        "      <td>bah</td>\n",
-       "      <td>0.20</td>\n",
+       "      <td>200.00</td>\n",
        "      <td>0.20</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>5</td>\n",
+       "      <th>5</th>\n",
        "      <td>0.25</td>\n",
-       "      <td>b</td>\n",
+       "      <td>a</td>\n",
        "      <td>foo</td>\n",
-       "      <td>250.00</td>\n",
        "      <td>0.25</td>\n",
+       "      <td>25.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>6</td>\n",
+       "      <th>6</th>\n",
        "      <td>0.30</td>\n",
-       "      <td>c</td>\n",
+       "      <td>b</td>\n",
        "      <td>bah</td>\n",
        "      <td>0.30</td>\n",
        "      <td>0.30</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7</td>\n",
+       "      <th>7</th>\n",
+       "      <td>0.35</td>\n",
+       "      <td>a</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.35</td>\n",
-       "      <td>b</td>\n",
-       "      <td>bah</td>\n",
        "      <td>0.35</td>\n",
-       "      <td>350.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>8</td>\n",
+       "      <th>8</th>\n",
        "      <td>0.40</td>\n",
-       "      <td>b</td>\n",
+       "      <td>c</td>\n",
        "      <td>foo</td>\n",
-       "      <td>400.00</td>\n",
-       "      <td>400.00</td>\n",
+       "      <td>0.40</td>\n",
+       "      <td>40.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>9</td>\n",
+       "      <th>9</th>\n",
        "      <td>0.45</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
        "      <td>450.00</td>\n",
        "      <td>0.45</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>10</td>\n",
+       "      <th>10</th>\n",
        "      <td>0.50</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
-       "      <td>500.00</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>500.00</td>\n",
+       "      <td>50.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>11</td>\n",
+       "      <th>11</th>\n",
        "      <td>0.55</td>\n",
        "      <td>c</td>\n",
        "      <td>foo</td>\n",
-       "      <td>550.00</td>\n",
-       "      <td>550.00</td>\n",
+       "      <td>0.55</td>\n",
+       "      <td>55.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12</td>\n",
+       "      <th>12</th>\n",
        "      <td>0.60</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
        "      <td>600.00</td>\n",
        "      <td>0.60</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>13</td>\n",
-       "      <td>0.65</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <th>13</th>\n",
        "      <td>0.65</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>650.00</td>\n",
+       "      <td>0.65</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>14</td>\n",
-       "      <td>0.70</td>\n",
-       "      <td>c</td>\n",
-       "      <td>foo</td>\n",
+       "      <th>14</th>\n",
        "      <td>0.70</td>\n",
+       "      <td>b</td>\n",
+       "      <td>bah</td>\n",
        "      <td>700.00</td>\n",
+       "      <td>70.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>15</td>\n",
+       "      <th>15</th>\n",
        "      <td>0.75</td>\n",
        "      <td>a</td>\n",
        "      <td>foo</td>\n",
        "      <td>0.75</td>\n",
-       "      <td>750.00</td>\n",
+       "      <td>0.75</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>16</td>\n",
-       "      <td>0.80</td>\n",
-       "      <td>a</td>\n",
-       "      <td>bah</td>\n",
+       "      <th>16</th>\n",
        "      <td>0.80</td>\n",
+       "      <td>b</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.80</td>\n",
+       "      <td>80.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>17</td>\n",
+       "      <th>17</th>\n",
        "      <td>0.85</td>\n",
-       "      <td>b</td>\n",
-       "      <td>bah</td>\n",
+       "      <td>c</td>\n",
+       "      <td>foo</td>\n",
        "      <td>0.85</td>\n",
        "      <td>0.85</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>18</td>\n",
+       "      <th>18</th>\n",
        "      <td>0.90</td>\n",
-       "      <td>a</td>\n",
-       "      <td>foo</td>\n",
+       "      <td>c</td>\n",
+       "      <td>bah</td>\n",
        "      <td>900.00</td>\n",
-       "      <td>0.90</td>\n",
+       "      <td>90.00</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>19</td>\n",
-       "      <td>0.95</td>\n",
-       "      <td>b</td>\n",
-       "      <td>foo</td>\n",
+       "      <th>19</th>\n",
        "      <td>0.95</td>\n",
+       "      <td>a</td>\n",
+       "      <td>bah</td>\n",
        "      <td>0.95</td>\n",
+       "      <td>95.00</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -1568,26 +1564,26 @@
       ],
       "text/plain": [
        "       A  B    C  A_Scaled_MAR  A_Scaled_MCAR\n",
-       "0   0.00  c  foo          0.00           0.00\n",
-       "1   0.05  b  foo         50.00          50.00\n",
-       "2   0.10  c  foo        100.00         100.00\n",
-       "3   0.15  a  foo        150.00         150.00\n",
-       "4   0.20  a  bah          0.20           0.20\n",
-       "5   0.25  b  foo        250.00           0.25\n",
-       "6   0.30  c  bah          0.30           0.30\n",
-       "7   0.35  b  bah          0.35         350.00\n",
-       "8   0.40  b  foo        400.00         400.00\n",
-       "9   0.45  b  foo        450.00           0.45\n",
-       "10  0.50  b  foo        500.00         500.00\n",
-       "11  0.55  c  foo        550.00         550.00\n",
-       "12  0.60  a  foo        600.00           0.60\n",
-       "13  0.65  b  foo          0.65         650.00\n",
-       "14  0.70  c  foo          0.70         700.00\n",
-       "15  0.75  a  foo          0.75         750.00\n",
-       "16  0.80  a  bah          0.80           0.80\n",
-       "17  0.85  b  bah          0.85           0.85\n",
-       "18  0.90  a  foo        900.00           0.90\n",
-       "19  0.95  b  foo          0.95           0.95"
+       "0   0.00  c  bah          0.00           0.00\n",
+       "1   0.05  a  bah         50.00           0.05\n",
+       "2   0.10  a  bah        100.00          10.00\n",
+       "3   0.15  c  foo          0.15          15.00\n",
+       "4   0.20  c  bah        200.00           0.20\n",
+       "5   0.25  a  foo          0.25          25.00\n",
+       "6   0.30  b  bah          0.30           0.30\n",
+       "7   0.35  a  foo          0.35           0.35\n",
+       "8   0.40  c  foo          0.40          40.00\n",
+       "9   0.45  c  bah        450.00           0.45\n",
+       "10  0.50  a  bah        500.00          50.00\n",
+       "11  0.55  c  foo          0.55          55.00\n",
+       "12  0.60  c  bah        600.00           0.60\n",
+       "13  0.65  a  bah        650.00           0.65\n",
+       "14  0.70  b  bah        700.00          70.00\n",
+       "15  0.75  a  foo          0.75           0.75\n",
+       "16  0.80  b  foo          0.80          80.00\n",
+       "17  0.85  c  foo          0.85           0.85\n",
+       "18  0.90  c  bah        900.00          90.00\n",
+       "19  0.95  a  bah          0.95          95.00"
       ]
      },
      "execution_count": 8,
@@ -1620,7 +1616,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/notebooks/example-image-augmentation.ipynb b/notebooks/example-image-augmentation.ipynb
new file mode 100644
index 0000000..8f9ad7f
--- /dev/null
+++ b/notebooks/example-image-augmentation.ipynb
@@ -0,0 +1,434 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from jenga.tasks.shoes import ShoeCategorizationTask\n",
+    "from jenga.corruptions.image import GaussianNoiseCorruption, MotionBlurCorruption, FogCorruption, BrightnessCorruption\n",
+    "\n",
+    "from jenga.evaluation.corruption_impact import CorruptionImpactEvaluator\n",
+    "\n",
+    "import matplotlib.pyplot as plt\n",
+    "\n",
+    "import imgaug.augmenters as iaa"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Instantiate the shoe categorization task and train a baseline model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95f8ca3050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95f8ca3050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "375/375 [==============================] - 8s 21ms/step - loss: 0.1645 - accuracy: 0.9371\n"
+     ]
+    }
+   ],
+   "source": [
+    "task = ShoeCategorizationTask(seed=42)\n",
+    "\n",
+    "baseline_model = task.fit_baseline_model()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Train another model on data augmented with gaussian noise corruptions "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95e7a42950> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95e7a42950> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "750/750 [==============================] - 15s 20ms/step - loss: 0.1758 - accuracy: 0.9317\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "augmented_data = [task.train_data]\n",
+    "augmented_labels= [task.train_labels]\n",
+    "\n",
+    "for severity in range(1, 6):\n",
+    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
+    "    sample = task.train_data[indexes, :, :].copy()\n",
+    "    corrupted_sample = GaussianNoiseCorruption(fraction=1.0, severity=severity).transform(sample)\n",
+    "    augmented_data.append(corrupted_sample)\n",
+    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
+    "\n",
+    "gaussian_noise_model = task.fit_baseline_model(np.concatenate(augmented_data), np.concatenate(augmented_labels))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Evaluate how well both models can handle corrupted test data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95e871fa70> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95e871fa70> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "0/70 (2.4312520000000006)\n",
+      "10/70 (25.508697000000012)\n",
+      "20/70 (48.24758)\n",
+      "30/70 (72.18926200000001)\n",
+      "40/70 (97.60440900000003)\n",
+      "50/70 (123.90635500000002)\n",
+      "60/70 (153.481381)\n",
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95e871f320> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95e871f320> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "0/70 (2.2302119999999945)\n",
+      "10/70 (24.656284000000028)\n",
+      "20/70 (47.887857999999994)\n",
+      "30/70 (72.486783)\n",
+      "40/70 (98.45609400000001)\n",
+      "50/70 (126.53835100000003)\n",
+      "60/70 (156.10243100000002)\n"
+     ]
+    }
+   ],
+   "source": [
+    "evaluator = CorruptionImpactEvaluator(task)\n",
+    "\n",
+    "corruptions  = []\n",
+    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
+    "    corruptions.append(GaussianNoiseCorruption(fraction=fraction, severity=4))\n",
+    "    \n",
+    "gaussian_noise_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
+    "gaussian_noise_results_aug = evaluator.evaluate(gaussian_noise_model, 10, *corruptions)    "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Train another model on data augmented with motion blur corruptions "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95e8d92050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95e8d92050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "750/750 [==============================] - 14s 19ms/step - loss: 0.1918 - accuracy: 0.9235\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "augmented_data = [task.train_data]\n",
+    "augmented_labels= [task.train_labels]\n",
+    "\n",
+    "for severity in range(1, 6):\n",
+    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
+    "    sample = task.train_data[indexes, :, :].copy()\n",
+    "    corrupted_sample = MotionBlurCorruption(fraction=1.0, severity=severity).transform(sample)\n",
+    "    augmented_data.append(corrupted_sample)\n",
+    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
+    "\n",
+    "motion_blur_model = task.fit_baseline_model(np.concatenate(augmented_data), np.concatenate(augmented_labels))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Evaluate how well both models can handle corrupted test data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/70 (2.341199999999958)\n",
+      "10/70 (25.791493999999943)\n",
+      "20/70 (50.48958399999992)\n",
+      "30/70 (77.47340499999996)\n",
+      "40/70 (110.57398899999998)\n",
+      "50/70 (155.77286800000002)\n",
+      "60/70 (209.93377999999996)\n",
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95dc2fdc20> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95dc2fdc20> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "0/70 (2.2907430000000204)\n",
+      "10/70 (25.817749999999933)\n",
+      "20/70 (50.94627600000001)\n",
+      "30/70 (78.43648799999994)\n",
+      "40/70 (112.28239000000008)\n",
+      "50/70 (155.99658799999997)\n",
+      "60/70 (209.01210100000003)\n"
+     ]
+    }
+   ],
+   "source": [
+    "evaluator = CorruptionImpactEvaluator(task)\n",
+    "\n",
+    "corruptions  = []\n",
+    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
+    "    corruptions.append(MotionBlurCorruption(fraction=fraction, severity=4))\n",
+    "    \n",
+    "motion_blur_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
+    "motion_blur_results_aug = evaluator.evaluate(motion_blur_model, 10, *corruptions)    "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Train another model on data augmented with fog corruptions "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95dc408050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_train_function.<locals>.train_function at 0x7f95dc408050> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "750/750 [==============================] - 16s 21ms/step - loss: 0.2099 - accuracy: 0.9189\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "augmented_data = [task.train_data]\n",
+    "augmented_labels= [task.train_labels]\n",
+    "\n",
+    "for severity in range(1, 6):\n",
+    "    indexes = np.random.choice(range(0, len(task.train_data)), 2400)\n",
+    "    sample = task.train_data[indexes, :, :].copy()\n",
+    "    corrupted_sample = FogCorruption(fraction=1.0, severity=severity).transform(sample)\n",
+    "    augmented_data.append(corrupted_sample)\n",
+    "    augmented_labels.append(task.train_labels[indexes].copy())\n",
+    "\n",
+    "fog_model = task.fit_baseline_model(np.concatenate(augmented_data), np.concatenate(augmented_labels))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Evaluate how well both models can handle corrupted test data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/70 (2.13116500000001)\n",
+      "10/70 (24.932033000000047)\n",
+      "20/70 (48.70954800000004)\n",
+      "30/70 (74.42075399999999)\n",
+      "40/70 (103.49048599999992)\n",
+      "50/70 (138.22527000000014)\n",
+      "60/70 (179.14466700000003)\n",
+      "WARNING:tensorflow:AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95dbf2db90> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "WARNING: AutoGraph could not transform <function Model.make_predict_function.<locals>.predict_function at 0x7f95dbf2db90> and will run it as-is.\n",
+      "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
+      "Cause: 'arguments' object has no attribute 'posonlyargs'\n",
+      "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
+      "0/70 (2.3602240000000165)\n",
+      "10/70 (26.135790000000043)\n",
+      "20/70 (50.680364000000054)\n",
+      "30/70 (76.93518500000005)\n",
+      "40/70 (106.07760499999995)\n",
+      "50/70 (141.95714199999998)\n",
+      "60/70 (183.23254999999995)\n"
+     ]
+    }
+   ],
+   "source": [
+    "evaluator = CorruptionImpactEvaluator(task)\n",
+    "\n",
+    "corruptions  = []\n",
+    "for fraction in [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]:\n",
+    "    corruptions.append(FogCorruption(fraction=fraction, severity=4))\n",
+    "    \n",
+    "fog_results = evaluator.evaluate(baseline_model, 10, *corruptions)        \n",
+    "fog_results_aug = evaluator.evaluate(fog_model, 10, *corruptions)   "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Plot the results"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 504x360 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "def as_series(results):\n",
+    "    medians = []\n",
+    "    for result in results:\n",
+    "        medians.append(np.median(result.corrupted_scores))\n",
+    "    return medians\n",
+    "\n",
+    "ax = plt.gca()        \n",
+    "\n",
+    "fractions = [0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.99]\n",
+    "markersize=6\n",
+    "\n",
+    "l = ax.axhline(gaussian_noise_results[0].baseline_score, linestyle='--', color='black')    \n",
+    "\n",
+    "plt.plot(fractions, as_series(gaussian_noise_results_aug), color='#dc6082', linestyle='dotted', marker='^', markersize=markersize, fillstyle='none')\n",
+    "plt.plot(fractions, as_series(gaussian_noise_results), color='#dc6082', marker='o', markersize=markersize)\n",
+    "\n",
+    "plt.plot(fractions, as_series(motion_blur_results_aug), color='#1e4052', linestyle='dotted', marker='^', markersize=markersize, fillstyle='none')\n",
+    "plt.plot(fractions, as_series(motion_blur_results), color='#1e4052', marker='o', markersize=markersize)\n",
+    "\n",
+    "plt.plot(fractions, as_series(fog_results_aug), color='#e1a677', linestyle='dotted', marker='^', markersize=markersize, fillstyle='none')\n",
+    "plt.plot(fractions, as_series(fog_results), color='#e1a677', marker='o', markersize=markersize)\n",
+    "\n",
+    "\n",
+    "ax.set_ylim((0.9, 0.999))\n",
+    "ax.tick_params(axis='both', which='major', labelsize=22)\n",
+    "ax.tick_params(axis='both', which='minor', labelsize=22)    \n",
+    "ax.set_ylabel('AUC', fontsize=24)\n",
+    "ax.set_xlabel('fraction', fontsize=24)\n",
+    "    \n",
+    "ax.legend(['clean', 'noise (aug)', 'noise', 'motion (aug)', 'motion', 'fog (aug)', 'fog'], fontsize=12)    \n",
+    "    \n",
+    "plt.tight_layout()\n",
+    "plt.gcf().set_size_inches(7, 5)\n",
+    "\n",
+    "plt.show()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/example-missing-value-imputation.ipynb b/notebooks/example-missing-value-imputation-datawig.ipynb
similarity index 50%
rename from example-missing-value-imputation.ipynb
rename to notebooks/example-missing-value-imputation-datawig.ipynb
index a95d3e6..371704c 100644
--- a/example-missing-value-imputation.ipynb
+++ b/notebooks/example-missing-value-imputation-datawig.ipynb
@@ -1,8 +1,17 @@
 {
  "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Disclaimer\n",
+    "\n",
+    "Because [datawig](https://github.com/awslabs/datawig) produces many dependency issues this notebook currently does not work!"
+   ]
+  },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -24,7 +33,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -40,7 +49,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -73,7 +82,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -109,74 +118,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "2020-10-19 19:39:05,883 [INFO]  CategoricalEncoder for column education                                found only 34 occurrences of value Preschool\n",
-      "2020-10-19 19:39:09,922 [INFO]  \n",
-      "========== start: fit model\n",
-      "2020-10-19 19:39:09,923 [WARNING]  Already bound, ignoring bind()\n",
-      "2020-10-19 19:39:13,999 [INFO]  Epoch[0] Batch [0-680]\tSpeed: 2679.75 samples/sec\tcross-entropy=1.743749\teducation-accuracy=0.389776\n",
-      "2020-10-19 19:39:18,054 [INFO]  Epoch[0] Train-cross-entropy=1.680336\n",
-      "2020-10-19 19:39:18,055 [INFO]  Epoch[0] Train-education-accuracy=0.394543\n",
-      "2020-10-19 19:39:18,056 [INFO]  Epoch[0] Time cost=8.131\n",
-      "2020-10-19 19:39:18,072 [INFO]  Saved checkpoint to \"imputer_model_education/model-0000.params\"\n",
-      "2020-10-19 19:39:18,711 [INFO]  Epoch[0] Validation-cross-entropy=1.691406\n",
-      "2020-10-19 19:39:18,712 [INFO]  Epoch[0] Validation-education-accuracy=0.393626\n",
-      "2020-10-19 19:39:22,807 [INFO]  Epoch[1] Batch [0-680]\tSpeed: 2660.46 samples/sec\tcross-entropy=1.664310\teducation-accuracy=0.396659\n",
-      "2020-10-19 19:39:26,873 [INFO]  Epoch[1] Train-cross-entropy=1.670714\n",
-      "2020-10-19 19:39:26,874 [INFO]  Epoch[1] Train-education-accuracy=0.396018\n",
-      "2020-10-19 19:39:26,875 [INFO]  Epoch[1] Time cost=8.163\n",
-      "2020-10-19 19:39:26,882 [INFO]  Saved checkpoint to \"imputer_model_education/model-0001.params\"\n",
-      "2020-10-19 19:39:27,527 [INFO]  Epoch[1] Validation-cross-entropy=1.689636\n",
-      "2020-10-19 19:39:27,528 [INFO]  Epoch[1] Validation-education-accuracy=0.393626\n",
-      "2020-10-19 19:39:31,642 [INFO]  Epoch[2] Batch [0-680]\tSpeed: 2647.92 samples/sec\tcross-entropy=1.661553\teducation-accuracy=0.395833\n",
-      "2020-10-19 19:39:35,777 [INFO]  Epoch[2] Train-cross-entropy=1.668964\n",
-      "2020-10-19 19:39:35,778 [INFO]  Epoch[2] Train-education-accuracy=0.395465\n",
-      "2020-10-19 19:39:35,779 [INFO]  Epoch[2] Time cost=8.250\n",
-      "2020-10-19 19:39:35,788 [INFO]  Saved checkpoint to \"imputer_model_education/model-0002.params\"\n",
-      "2020-10-19 19:39:36,433 [INFO]  Epoch[2] Validation-cross-entropy=1.690100\n",
-      "2020-10-19 19:39:36,434 [INFO]  Epoch[2] Validation-education-accuracy=0.397351\n",
-      "2020-10-19 19:39:40,534 [INFO]  Epoch[3] Batch [0-680]\tSpeed: 2657.71 samples/sec\tcross-entropy=1.660772\teducation-accuracy=0.395742\n",
-      "2020-10-19 19:39:44,626 [INFO]  Epoch[3] Train-cross-entropy=1.668417\n",
-      "2020-10-19 19:39:44,627 [INFO]  Epoch[3] Train-education-accuracy=0.394912\n",
-      "2020-10-19 19:39:44,627 [INFO]  Epoch[3] Time cost=8.192\n",
-      "2020-10-19 19:39:44,637 [INFO]  Saved checkpoint to \"imputer_model_education/model-0003.params\"\n",
-      "2020-10-19 19:39:45,271 [INFO]  Epoch[3] Validation-cross-entropy=1.690723\n",
-      "2020-10-19 19:39:45,272 [INFO]  Epoch[3] Validation-education-accuracy=0.397351\n",
-      "2020-10-19 19:39:49,396 [INFO]  Epoch[4] Batch [0-680]\tSpeed: 2641.44 samples/sec\tcross-entropy=1.660451\teducation-accuracy=0.395925\n",
-      "2020-10-19 19:39:53,719 [INFO]  Epoch[4] Train-cross-entropy=1.668202\n",
-      "2020-10-19 19:39:53,720 [INFO]  Epoch[4] Train-education-accuracy=0.394819\n",
-      "2020-10-19 19:39:53,721 [INFO]  Epoch[4] Time cost=8.449\n",
-      "2020-10-19 19:39:53,731 [INFO]  Saved checkpoint to \"imputer_model_education/model-0004.params\"\n",
-      "2020-10-19 19:39:54,391 [INFO]  Epoch[4] Validation-cross-entropy=1.691281\n",
-      "2020-10-19 19:39:54,391 [INFO]  Epoch[4] Validation-education-accuracy=0.397351\n",
-      "2020-10-19 19:39:58,818 [INFO]  Epoch[5] Batch [0-680]\tSpeed: 2460.79 samples/sec\tcross-entropy=1.660292\teducation-accuracy=0.396200\n",
-      "2020-10-19 19:40:03,191 [INFO]  Epoch[5] Train-cross-entropy=1.668102\n",
-      "2020-10-19 19:40:03,192 [INFO]  Epoch[5] Train-education-accuracy=0.394451\n",
-      "2020-10-19 19:40:03,193 [INFO]  Epoch[5] Time cost=8.801\n",
-      "2020-10-19 19:40:03,201 [INFO]  Saved checkpoint to \"imputer_model_education/model-0005.params\"\n",
-      "2020-10-19 19:40:03,863 [INFO]  Epoch[5] Validation-cross-entropy=1.691768\n",
-      "2020-10-19 19:40:03,864 [INFO]  Epoch[5] Validation-education-accuracy=0.397351\n",
-      "2020-10-19 19:40:08,004 [INFO]  Epoch[6] Batch [0-680]\tSpeed: 2631.51 samples/sec\tcross-entropy=1.660203\teducation-accuracy=0.396017\n",
-      "2020-10-19 19:40:12,095 [INFO]  Epoch[6] Train-cross-entropy=1.668051\n",
-      "2020-10-19 19:40:12,096 [INFO]  Epoch[6] Train-education-accuracy=0.394451\n",
-      "2020-10-19 19:40:12,097 [INFO]  Epoch[6] Time cost=8.232\n",
-      "2020-10-19 19:40:12,106 [INFO]  Saved checkpoint to \"imputer_model_education/model-0006.params\"\n",
-      "2020-10-19 19:40:12,740 [INFO]  No improvement detected for 5 epochs compared to 1.6896359636294132 last error obtained: 1.692201592274849, stopping here\n",
-      "2020-10-19 19:40:12,741 [INFO]  \n",
-      "========== done (62.819414138793945 s) fit model\n",
-      "/Users/felix/code/jenga/yacl_env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples.\n",
-      "  'precision', 'predicted', average, warn_for)\n",
-      "/Users/felix/code/jenga/yacl_env/lib/python3.7/site-packages/sklearn/metrics/classification.py:1437: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n",
-      "  'precision', 'predicted', average, warn_for)\n"
-     ]
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
     "education_imputer = DatawigImputer(['occupation', 'marital_status', 'workclass'], 'education')\n",
     "education_imputer.fit(task.train_data)"
@@ -184,7 +128,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -194,7 +138,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -204,7 +148,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -221,7 +165,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -240,7 +184,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -262,7 +206,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -285,28 +229,11 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
-      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:    2.7s\n",
-      "[Parallel(n_jobs=-1)]: Done  60 out of  60 | elapsed:    3.1s finished\n"
-     ]
-    }
-   ],
-   "source": [
-    "model = task.fit_baseline_model(task.train_data, task.train_labels)"
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "model = task.fit_baseline_model()"
    ]
   },
   {
@@ -318,12 +245,11 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
-    "datawig_model = ChainedModelDecorator(model, [education_imputer, workclass_imputer, \n",
-    "                                                        marital_status_imputer, occupation_imputer])\n",
+    "datawig_model = ChainedModelDecorator(model, [education_imputer, workclass_imputer, marital_status_imputer, occupation_imputer])\n",
     "mode_model = ModelDecorator(model, imputer)"
    ]
   },
@@ -336,136 +262,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "0/600 (0.018958999999995285)\n",
-      "10/600 (0.1908939999998438)\n",
-      "20/600 (0.39341399999989335)\n",
-      "30/600 (0.5894269999998869)\n",
-      "40/600 (0.768291999999974)\n",
-      "50/600 (0.9796839999999065)\n",
-      "60/600 (1.1884759999998096)\n",
-      "70/600 (1.3675479999999425)\n",
-      "80/600 (1.5585579999999482)\n",
-      "90/600 (1.757327000000032)\n",
-      "100/600 (1.9471199999998134)\n",
-      "110/600 (2.1367669999999634)\n",
-      "120/600 (2.3312049999999545)\n",
-      "130/600 (2.5115359999999782)\n",
-      "140/600 (2.7168389999999363)\n",
-      "150/600 (2.904880999999932)\n",
-      "160/600 (3.071954000000005)\n",
-      "170/600 (3.2657729999998537)\n",
-      "180/600 (3.4666879999999765)\n",
-      "190/600 (3.6373519999999644)\n",
-      "200/600 (3.8401779999999235)\n",
-      "210/600 (4.040876000000026)\n",
-      "220/600 (4.221401999999898)\n",
-      "230/600 (4.408975999999939)\n",
-      "240/600 (4.598799999999983)\n",
-      "250/600 (4.790009999999938)\n",
-      "260/600 (4.995473999999831)\n",
-      "270/600 (5.184755999999879)\n",
-      "280/600 (5.357086999999865)\n",
-      "290/600 (5.538969999999836)\n",
-      "300/600 (5.74452499999984)\n",
-      "310/600 (5.921030999999857)\n",
-      "320/600 (6.117923000000019)\n",
-      "330/600 (6.314012999999932)\n",
-      "340/600 (6.496251999999913)\n",
-      "350/600 (6.692238999999972)\n",
-      "360/600 (6.900142999999844)\n",
-      "370/600 (7.073151999999936)\n",
-      "380/600 (7.283463999999867)\n",
-      "390/600 (7.48445300000003)\n",
-      "400/600 (7.663878999999952)\n",
-      "410/600 (7.864323999999897)\n",
-      "420/600 (8.074449999999842)\n",
-      "430/600 (8.261029000000008)\n",
-      "440/600 (8.476637999999866)\n",
-      "450/600 (8.676662999999962)\n",
-      "460/600 (8.855958999999984)\n",
-      "470/600 (9.097663999999895)\n",
-      "480/600 (9.30408199999988)\n",
-      "490/600 (9.499389999999948)\n",
-      "500/600 (9.69453999999996)\n",
-      "510/600 (9.896092999999837)\n",
-      "520/600 (10.057836999999836)\n",
-      "530/600 (10.253080999999838)\n",
-      "540/600 (10.432720000000018)\n",
-      "550/600 (10.608760999999959)\n",
-      "560/600 (10.807513999999856)\n",
-      "570/600 (10.98799599999984)\n",
-      "580/600 (11.150351)\n",
-      "590/600 (11.336250999999947)\n",
-      "0/600 (0.020414999999957217)\n",
-      "10/600 (0.21169499999996333)\n",
-      "20/600 (0.42033999999989646)\n",
-      "30/600 (0.6487329999999929)\n",
-      "40/600 (0.8386279999999715)\n",
-      "50/600 (1.0537600000000111)\n",
-      "60/600 (1.2535659999998643)\n",
-      "70/600 (1.445788999999877)\n",
-      "80/600 (1.6637430000000677)\n",
-      "90/600 (1.8774809999999889)\n",
-      "100/600 (2.0670370000000275)\n",
-      "110/600 (2.2757930000000215)\n",
-      "120/600 (2.470448000000033)\n",
-      "130/600 (2.652170000000069)\n",
-      "140/600 (2.859118999999964)\n",
-      "150/600 (3.0552789999999277)\n",
-      "160/600 (3.239753999999948)\n",
-      "170/600 (3.4501020000000153)\n",
-      "180/600 (3.659611000000041)\n",
-      "190/600 (3.849179000000049)\n",
-      "200/600 (4.095593000000008)\n",
-      "210/600 (4.307900000000018)\n",
-      "220/600 (4.4881410000000415)\n",
-      "230/600 (4.708210999999892)\n",
-      "240/600 (4.913142999999991)\n",
-      "250/600 (5.099725000000035)\n",
-      "260/600 (5.318786999999929)\n",
-      "270/600 (5.541699999999992)\n",
-      "280/600 (5.728567999999996)\n",
-      "290/600 (5.93122500000004)\n",
-      "300/600 (6.138071000000082)\n",
-      "310/600 (6.318641999999954)\n",
-      "320/600 (6.527231999999913)\n",
-      "330/600 (6.742307999999866)\n",
-      "340/600 (6.933041999999887)\n",
-      "350/600 (7.15395599999988)\n",
-      "360/600 (7.352427000000034)\n",
-      "370/600 (7.535846999999876)\n",
-      "380/600 (7.751643000000058)\n",
-      "390/600 (7.948591999999962)\n",
-      "400/600 (8.14049399999999)\n",
-      "410/600 (8.348340000000007)\n",
-      "420/600 (8.58195899999987)\n",
-      "430/600 (8.760273999999981)\n",
-      "440/600 (8.974338999999873)\n",
-      "450/600 (9.180012000000033)\n",
-      "460/600 (9.384806000000026)\n",
-      "470/600 (9.610971000000063)\n",
-      "480/600 (9.839365999999927)\n",
-      "490/600 (10.025132999999869)\n",
-      "500/600 (10.251549000000068)\n",
-      "510/600 (10.468270000000075)\n",
-      "520/600 (10.66258599999992)\n",
-      "530/600 (10.873481999999967)\n",
-      "540/600 (11.0759579999999)\n",
-      "550/600 (11.2691769999999)\n",
-      "560/600 (11.49751399999991)\n",
-      "570/600 (11.731184999999869)\n",
-      "580/600 (11.949166999999989)\n",
-      "590/600 (12.164201999999932)\n"
-     ]
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
     "results = evaluator.evaluate(model, 10, *corruptions)\n",
     "decorated_results = evaluator.evaluate(mode_model, 10, *corruptions)"
@@ -482,19 +281,7 @@
    "cell_type": "code",
    "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "0/600 (11.728351999999859)\n",
-      "10/600 (128.95038399999999)\n",
-      "20/600 (247.1644859999999)\n",
-      "30/600 (364.05828299999985)\n",
-      "40/600 (481.7746539999998)\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "datawig_results = evaluator.evaluate(datawig_model, 10, *corruptions)"
    ]
@@ -515,7 +302,7 @@
     "def find_result(column, fraction, missingness, results):\n",
     "    for result in results:\n",
     "        corr = result.corruption\n",
-    "        if corr.column == column and corr.fraction == fraction and corr.missingness == missingness:\n",
+    "        if corr.column == column and corr.fraction == fraction and corr.sampling == missingness:\n",
     "            return result"
    ]
   },
@@ -543,17 +330,19 @@
     "    ax.axhline(baseline_score, linestyle='--', color='red')\n",
     "    bplot = ax.boxplot(scores, showfliers=False, patch_artist=True, medianprops={'color':'black'})\n",
     "\n",
-    "    colors = ['#1e4052', '#dc6082', '#e1a677',\n",
-    "              '#1e4052', '#dc6082', '#e1a677', \n",
-    "              '#1e4052', '#dc6082', '#e1a677', \n",
-    "              '#1e4052', '#dc6082', '#e1a677']\n",
+    "    colors = [\n",
+    "        '#1e4052', '#dc6082', '#e1a677',\n",
+    "        '#1e4052', '#dc6082', '#e1a677', \n",
+    "        '#1e4052', '#dc6082', '#e1a677', \n",
+    "        '#1e4052', '#dc6082', '#e1a677'\n",
+    "    ]\n",
     "    \n",
     "    for patch, color in zip(bplot['boxes'], colors):\n",
     "        patch.set_facecolor(color)\n",
     "        \n",
     "    ax.yaxis.grid(True)\n",
-    "\n",
     "    ax.set_xticklabels(labels)\n",
+    "    \n",
     "    for tick in ax.get_xticklabels():\n",
     "        tick.set_rotation(90)\n",
     "    \n",
@@ -691,13 +480,13 @@
    "source": [
     "import jsonpickle\n",
     "\n",
-    "with open(\"datawig-results.jsonpickle\", \"w\") as text_file:\n",
+    "with open(\"../data/raw/datawig-results.jsonpickle\", \"w\") as text_file:\n",
     "    text_file.write(jsonpickle.encode(datawig_results))  \n",
     "    \n",
-    "with open(\"mode-results.jsonpickle\", \"w\") as text_file:\n",
+    "with open(\"../data/raw/mode-results.jsonpickle\", \"w\") as text_file:\n",
     "    text_file.write(jsonpickle.encode(decorated_results))    \n",
     "    \n",
-    "with open(\"no-results.jsonpickle\", \"w\") as text_file:\n",
+    "with open(\"../data/raw/no-results.jsonpickle\", \"w\") as text_file:\n",
     "    text_file.write(jsonpickle.encode(results))        "
    ]
   }
@@ -718,7 +507,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/notebooks/example-missing-value-imputation.ipynb b/notebooks/example-missing-value-imputation.ipynb
new file mode 100644
index 0000000..55d8898
--- /dev/null
+++ b/notebooks/example-missing-value-imputation.ipynb
@@ -0,0 +1,597 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from jenga.tasks.income import IncomeEstimationTask\n",
+    "from jenga.corruptions.generic import MissingValues\n",
+    "from jenga.evaluation.corruption_impact import CorruptionImpactEvaluator\n",
+    "import matplotlib.pyplot as plt\n",
+    "\n",
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Instantiate the income estimation task, make it ignore incomplete records for model training"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "task = IncomeEstimationTask(seed=42, ignore_incomplete_records_for_training=True)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### A missing value imputer which imputes the most frequent value per column"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class ModeImputer:\n",
+    "    def __init__(self, columns):\n",
+    "        self.columns = columns\n",
+    "        self.modes = {}\n",
+    "        \n",
+    "    def fit(self, data):\n",
+    "        for column in self.columns:\n",
+    "            mode = data[column].value_counts().index[0]\n",
+    "            self.modes[column] = mode\n",
+    "            \n",
+    "    def transform(self, data):\n",
+    "        imputed = data.copy(deep=True)\n",
+    "        for column in self.columns:\n",
+    "            imputed[column].fillna(self.modes[column], inplace=True) \n",
+    "        return imputed\n",
+    "            \n",
+    "imputer = ModeImputer(['education', 'workclass', 'marital_status', 'occupation'])\n",
+    "imputer.fit(task.train_data)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Some glue code (decorators) to be able to apply the imputers in our task"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class ChainedModelDecorator:\n",
+    "    def __init__(self, model, imputers):\n",
+    "        self.model = model\n",
+    "        self.imputers = imputers\n",
+    "        \n",
+    "    def predict_proba(self, data):\n",
+    "        imputed = data\n",
+    "        for imputer in self.imputers:\n",
+    "            imputed = imputer.transform(imputed)\n",
+    "        \n",
+    "        return self.model.predict_proba(imputed)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "class ModelDecorator:\n",
+    "    def __init__(self, model, imputer):\n",
+    "        self.model = model\n",
+    "        self.imputer = imputer\n",
+    "        \n",
+    "    def predict_proba(self, data):\n",
+    "        return self.model.predict_proba(self.imputer.transform(data))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### We generate the data corruptions to evaluate: missing values of different kinds and strengths for the columns of interest"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "evaluator = CorruptionImpactEvaluator(task)\n",
+    "\n",
+    "corruptions = []\n",
+    "for impacted_column in ['education', 'workclass', 'marital_status', 'occupation']:\n",
+    "    for fraction in [0.99, 0.5, 0.25, 0.1, 0.01]:\n",
+    "        for missingness in ['MCAR', 'MAR', 'MNAR']:\n",
+    "            corruption = MissingValues(impacted_column, fraction, missingness=missingness, na_value=np.nan)\n",
+    "            corruptions.append(corruption)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Train the baseline model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "model = task.fit_baseline_model()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# TODO"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mode_model = ModelDecorator(model, imputer)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Evaluate the impact of the corruptions on the baseline model and the model with mode imputation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0/600 (0.020969000000000015)\n",
+      "10/600 (0.17718100000000003)\n",
+      "20/600 (0.3846999999999996)\n",
+      "30/600 (0.5902329999999996)\n",
+      "40/600 (0.7689619999999993)\n",
+      "50/600 (0.9333640000000001)\n",
+      "60/600 (1.0935689999999996)\n",
+      "70/600 (1.2556849999999988)\n",
+      "80/600 (1.4330170000000004)\n",
+      "90/600 (1.6642169999999998)\n",
+      "100/600 (1.8333789999999999)\n",
+      "110/600 (2.003153)\n",
+      "120/600 (2.1556740000000003)\n",
+      "130/600 (2.307066999999999)\n",
+      "140/600 (2.460321999999999)\n",
+      "150/600 (2.6243869999999996)\n",
+      "160/600 (2.7566300000000004)\n",
+      "170/600 (2.918701999999999)\n",
+      "180/600 (3.0862489999999996)\n",
+      "190/600 (3.2254300000000002)\n",
+      "200/600 (3.421069)\n",
+      "210/600 (3.618344999999999)\n",
+      "220/600 (3.785946)\n",
+      "230/600 (3.940746)\n",
+      "240/600 (4.098380999999999)\n",
+      "250/600 (4.280361)\n",
+      "260/600 (4.456404999999999)\n",
+      "270/600 (4.609274999999999)\n",
+      "280/600 (4.740709)\n",
+      "290/600 (4.918366)\n",
+      "300/600 (5.114786999999999)\n",
+      "310/600 (5.263886)\n",
+      "320/600 (5.419469)\n",
+      "330/600 (5.610081)\n",
+      "340/600 (5.756958999999999)\n",
+      "350/600 (5.922966)\n",
+      "360/600 (6.227567)\n",
+      "370/600 (6.368768)\n",
+      "380/600 (6.519061)\n",
+      "390/600 (6.672249999999999)\n",
+      "400/600 (6.809862)\n",
+      "410/600 (6.956022)\n",
+      "420/600 (7.117166)\n",
+      "430/600 (7.256405)\n",
+      "440/600 (7.426818)\n",
+      "450/600 (7.59153)\n",
+      "460/600 (7.75411)\n",
+      "470/600 (7.923927)\n",
+      "480/600 (8.099373)\n",
+      "490/600 (8.255693999999998)\n",
+      "500/600 (8.432334)\n",
+      "510/600 (8.61028)\n",
+      "520/600 (8.781082000000001)\n",
+      "530/600 (8.992186)\n",
+      "540/600 (9.177335)\n",
+      "550/600 (9.349693000000002)\n",
+      "560/600 (9.501957)\n",
+      "570/600 (9.668907)\n",
+      "580/600 (9.837183)\n",
+      "590/600 (10.005798000000002)\n",
+      "0/600 (0.014841000000000548)\n",
+      "10/600 (0.19789400000000157)\n",
+      "20/600 (0.4280310000000007)\n",
+      "30/600 (0.638503)\n",
+      "40/600 (0.8033670000000015)\n",
+      "50/600 (0.9766410000000008)\n",
+      "60/600 (1.152826000000001)\n",
+      "70/600 (1.327452000000001)\n",
+      "80/600 (1.5342790000000015)\n",
+      "90/600 (1.7193530000000017)\n",
+      "100/600 (1.8745480000000008)\n",
+      "110/600 (2.031570000000002)\n",
+      "120/600 (2.2086679999999994)\n",
+      "130/600 (2.368508000000002)\n",
+      "140/600 (2.5582840000000004)\n",
+      "150/600 (2.7496620000000007)\n",
+      "160/600 (2.920482)\n",
+      "170/600 (3.0935820000000014)\n",
+      "180/600 (3.3028140000000015)\n",
+      "190/600 (3.5036050000000003)\n",
+      "200/600 (3.7177710000000026)\n",
+      "210/600 (3.918330000000001)\n",
+      "220/600 (4.104082000000002)\n",
+      "230/600 (4.299132)\n",
+      "240/600 (4.4884660000000025)\n",
+      "250/600 (4.669254000000002)\n",
+      "260/600 (4.871669000000001)\n",
+      "270/600 (5.044627000000002)\n",
+      "280/600 (5.204433000000002)\n",
+      "290/600 (5.374782)\n",
+      "300/600 (5.5584450000000025)\n",
+      "310/600 (5.718198000000001)\n",
+      "320/600 (5.943989000000002)\n",
+      "330/600 (6.181936)\n",
+      "340/600 (6.359052999999999)\n",
+      "350/600 (6.536975999999999)\n",
+      "360/600 (6.718325)\n",
+      "370/600 (6.921659999999999)\n",
+      "380/600 (7.176145000000002)\n",
+      "390/600 (7.384891)\n",
+      "400/600 (7.540409)\n",
+      "410/600 (7.708362000000001)\n",
+      "420/600 (7.880669000000001)\n",
+      "430/600 (8.057997)\n",
+      "440/600 (8.239713000000002)\n",
+      "450/600 (8.41141)\n",
+      "460/600 (8.567118)\n",
+      "470/600 (8.745307)\n",
+      "480/600 (8.958199)\n",
+      "490/600 (9.114332000000001)\n",
+      "500/600 (9.290839000000002)\n",
+      "510/600 (9.496393000000001)\n",
+      "520/600 (9.679824)\n",
+      "530/600 (9.857267)\n",
+      "540/600 (10.031678)\n",
+      "550/600 (10.188277)\n",
+      "560/600 (10.347563000000001)\n",
+      "570/600 (10.528161)\n",
+      "580/600 (10.680341000000002)\n",
+      "590/600 (10.857700000000001)\n"
+     ]
+    }
+   ],
+   "source": [
+    "results = evaluator.evaluate(model, 10, *corruptions)\n",
+    "decorated_results = evaluator.evaluate(mode_model, 10, *corruptions)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Code to plot the results"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def find_result(column, fraction, missingness, results):\n",
+    "    for result in results:\n",
+    "        corr = result.corruption\n",
+    "        if corr.column == column and corr.fraction == fraction and corr.sampling == missingness:\n",
+    "            return result"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def plot_impact(column, plt, results, suffix=''):\n",
+    "    ax = plt.gca()\n",
+    "    \n",
+    "    scores = []\n",
+    "    labels = []\n",
+    "\n",
+    "    for impacted_column in [column]:\n",
+    "        for fraction in [0.01, 0.1, 0.5, 0.99]:  \n",
+    "            for missingness in ['MNAR', 'MAR', 'MCAR']:                    \n",
+    "                result = find_result(impacted_column, fraction, missingness, results)\n",
+    "                scores.append(result.corrupted_scores)\n",
+    "                labels.append(f\"{missingness} {int(fraction*100)}%\")\n",
+    "\n",
+    "    baseline_score = result.baseline_score            \n",
+    "\n",
+    "    ax.axhline(baseline_score, linestyle='--', color='red')\n",
+    "    bplot = ax.boxplot(scores, showfliers=False, patch_artist=True, medianprops={'color':'black'})\n",
+    "\n",
+    "    colors = [\n",
+    "        '#1e4052', '#dc6082', '#e1a677',\n",
+    "        '#1e4052', '#dc6082', '#e1a677', \n",
+    "        '#1e4052', '#dc6082', '#e1a677', \n",
+    "        '#1e4052', '#dc6082', '#e1a677'\n",
+    "    ]\n",
+    "    \n",
+    "    for patch, color in zip(bplot['boxes'], colors):\n",
+    "        patch.set_facecolor(color)\n",
+    "        \n",
+    "    ax.yaxis.grid(True)\n",
+    "    ax.set_xticklabels(labels)\n",
+    "    \n",
+    "    for tick in ax.get_xticklabels():\n",
+    "        tick.set_rotation(90)\n",
+    "    \n",
+    "    ax.set_ylim((0.79, 0.895))\n",
+    "    ax.set_title(f\"Missing values in '{column}'\", fontsize=24)\n",
+    "    ax.tick_params(axis='both', which='major', labelsize=22)\n",
+    "    ax.tick_params(axis='both', which='minor', labelsize=22)    \n",
+    "    ax.set_ylabel('AUC', fontsize=24)\n",
+    "    \n",
+    "    plt.gcf().set_size_inches(8, 6)\n",
+    "    plt.tight_layout()\n",
+    "    plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('education', plt, results)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('education', plt, decorated_results, '-mode')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('workclass', plt, results)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('workclass', plt, decorated_results, '-mode')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('marital_status', plt, results)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('marital_status', plt, decorated_results, '-mode')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('occupation', plt, results)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 576x432 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plot_impact('occupation', plt, decorated_results, '-mode')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Save the results for later analysis"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import jsonpickle\n",
+    "    \n",
+    "with open(\"../data/raw/mode-results.jsonpickle\", \"w\") as text_file:\n",
+    "    text_file.write(jsonpickle.encode(decorated_results))    \n",
+    "    \n",
+    "with open(\"../data/raw/no-results.jsonpickle\", \"w\") as text_file:\n",
+    "    text_file.write(jsonpickle.encode(results))        "
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/impute-missing-values-siks-lecture.ipynb b/notebooks/impute-missing-values-siks-lecture.ipynb
similarity index 57%
rename from impute-missing-values-siks-lecture.ipynb
rename to notebooks/impute-missing-values-siks-lecture.ipynb
index fd1505b..18e4b33 100644
--- a/impute-missing-values-siks-lecture.ipynb
+++ b/notebooks/impute-missing-values-siks-lecture.ipynb
@@ -24,26 +24,9 @@
    "cell_type": "code",
    "execution_count": 3,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\n",
-      "[Parallel(n_jobs=-1)]: Done  34 tasks      | elapsed:    2.6s\n",
-      "[Parallel(n_jobs=-1)]: Done  60 out of  60 | elapsed:    3.2s finished\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "model = task.fit_baseline_model(task.train_data, task.train_labels)"
+    "model = task.fit_baseline_model()"
    ]
   },
   {
@@ -54,7 +37,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the test data is 0.8868040711646413'"
+       "'The ROC AUC score on the test data is 0.8835656042788887'"
       ]
      },
      "execution_count": 4,
@@ -63,9 +46,7 @@
     }
    ],
    "source": [
-    "y_pred = model.predict_proba(task.test_data)\n",
-    "\n",
-    "f\"The ROC AUC score on the test data is {task.score_on_test_data(y_pred)}\""
+    "f\"The ROC AUC score on the test data is {task.get_baseline_performance()}\""
    ]
   },
   {
@@ -104,52 +85,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>5595</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Craft-repair</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
+       "      <th>23038</th>\n",
+       "      <td>Self-emp-not-inc</td>\n",
+       "      <td>Transport-moving</td>\n",
+       "      <td>Separated</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>45</td>\n",
-       "      <td>60</td>\n",
+       "      <td>70</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>29818</td>\n",
+       "      <th>30795</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Divorced</td>\n",
+       "      <td>Craft-repair</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>24</td>\n",
+       "      <td>45</td>\n",
+       "      <td>34</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>480</td>\n",
+       "      <th>10734</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Assoc-acdm</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>45</td>\n",
-       "      <td>33</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28532</td>\n",
+       "      <th>9733</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>11th</td>\n",
-       "      <td>40</td>\n",
-       "      <td>52</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Widowed</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>24</td>\n",
+       "      <td>69</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>32419</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Exec-managerial</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
-       "      <td>55</td>\n",
-       "      <td>36</td>\n",
+       "      <th>13522</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Tech-support</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>24</td>\n",
+       "      <td>20</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -158,49 +139,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7854</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
-       "      <td>Never-married</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>50</td>\n",
+       "      <th>23795</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Sales</td>\n",
+       "      <td>Divorced</td>\n",
+       "      <td>HS-grad</td>\n",
        "      <td>25</td>\n",
+       "      <td>31</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7946</td>\n",
+       "      <th>8091</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>29</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Masters</td>\n",
+       "      <td>45</td>\n",
+       "      <td>59</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12168</td>\n",
-       "      <td>Federal-gov</td>\n",
-       "      <td>Handlers-cleaners</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38</td>\n",
+       "      <th>29601</th>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>20</td>\n",
+       "      <td>65</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>30644</td>\n",
+       "      <th>26017</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>Never-married</td>\n",
-       "      <td>Assoc-acdm</td>\n",
-       "      <td>30</td>\n",
-       "      <td>37</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>50</td>\n",
+       "      <td>25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28214</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Sales</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>50</td>\n",
-       "      <td>37</td>\n",
+       "      <th>6647</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>12th</td>\n",
+       "      <td>25</td>\n",
+       "      <td>21</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -208,31 +189,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation      marital_status     education  \\\n",
-       "5595            Private       Craft-repair  Married-civ-spouse       HS-grad   \n",
-       "29818           Private      Other-service            Divorced       HS-grad   \n",
-       "480             Private       Craft-repair  Married-civ-spouse    Assoc-acdm   \n",
-       "28532           Private  Machine-op-inspct  Married-civ-spouse          11th   \n",
-       "32419           Private    Exec-managerial  Married-civ-spouse     Bachelors   \n",
-       "...                 ...                ...                 ...           ...   \n",
-       "7854   Self-emp-not-inc    Farming-fishing       Never-married  Some-college   \n",
-       "7946            Private  Machine-op-inspct            Divorced  Some-college   \n",
-       "12168       Federal-gov  Handlers-cleaners            Divorced  Some-college   \n",
-       "30644           Private      Other-service       Never-married    Assoc-acdm   \n",
-       "28214  Self-emp-not-inc              Sales  Married-civ-spouse       HS-grad   \n",
+       "              workclass        occupation      marital_status     education  \\\n",
+       "23038  Self-emp-not-inc  Transport-moving           Separated       HS-grad   \n",
+       "30795           Private      Craft-repair  Married-civ-spouse       HS-grad   \n",
+       "10734           Private      Craft-repair  Married-civ-spouse  Some-college   \n",
+       "9733            Private      Adm-clerical             Widowed       HS-grad   \n",
+       "13522       Federal-gov      Tech-support       Never-married  Some-college   \n",
+       "...                 ...               ...                 ...           ...   \n",
+       "23795           Private             Sales            Divorced       HS-grad   \n",
+       "8091            Private   Exec-managerial  Married-civ-spouse       Masters   \n",
+       "29601               NaN               NaN  Married-civ-spouse       HS-grad   \n",
+       "26017           Private  Transport-moving       Never-married  Some-college   \n",
+       "6647        Federal-gov      Adm-clerical       Never-married          12th   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "5595               45   60  \n",
-       "29818              40   24  \n",
-       "480                45   33  \n",
-       "28532              40   52  \n",
-       "32419              55   36  \n",
+       "23038              70   35  \n",
+       "30795              45   34  \n",
+       "10734              45   35  \n",
+       "9733               24   69  \n",
+       "13522              24   20  \n",
        "...               ...  ...  \n",
-       "7854               50   25  \n",
-       "7946               40   29  \n",
-       "12168              40   38  \n",
-       "30644              30   37  \n",
-       "28214              50   37  \n",
+       "23795              25   31  \n",
+       "8091               45   59  \n",
+       "29601              20   65  \n",
+       "26017              50   25  \n",
+       "6647               25   21  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -261,7 +242,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the corrupted test data is 0.871314973781681'"
+       "'The ROC AUC score on the corrupted test data is 0.8702776815283744'"
       ]
      },
      "execution_count": 6,
@@ -295,7 +276,7 @@
     {
      "data": {
       "text/plain": [
-       "38.61793611793612"
+       "38.601082616707615"
       ]
      },
      "execution_count": 7,
@@ -344,52 +325,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>5595</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Craft-repair</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
+       "      <th>23038</th>\n",
+       "      <td>Self-emp-not-inc</td>\n",
+       "      <td>Transport-moving</td>\n",
+       "      <td>Separated</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>45</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <td>70</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>29818</td>\n",
+       "      <th>30795</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Divorced</td>\n",
+       "      <td>Craft-repair</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <td>45</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>480</td>\n",
+       "      <th>10734</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Assoc-acdm</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>45</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28532</td>\n",
+       "      <th>9733</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>11th</td>\n",
-       "      <td>40</td>\n",
-       "      <td>52.000000</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Widowed</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>24</td>\n",
+       "      <td>69.000000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>32419</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Exec-managerial</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
-       "      <td>55</td>\n",
-       "      <td>36.000000</td>\n",
+       "      <th>13522</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Tech-support</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>24</td>\n",
+       "      <td>20.000000</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -398,49 +379,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7854</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
-       "      <td>Never-married</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>50</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <th>23795</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Sales</td>\n",
+       "      <td>Divorced</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>25</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7946</td>\n",
+       "      <th>8091</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Masters</td>\n",
+       "      <td>45</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12168</td>\n",
-       "      <td>Federal-gov</td>\n",
-       "      <td>Handlers-cleaners</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <th>29601</th>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>20</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>30644</td>\n",
+       "      <th>26017</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>Never-married</td>\n",
-       "      <td>Assoc-acdm</td>\n",
-       "      <td>30</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>50</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28214</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Sales</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>50</td>\n",
-       "      <td>38.617936</td>\n",
+       "      <th>6647</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>12th</td>\n",
+       "      <td>25</td>\n",
+       "      <td>38.601083</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -448,31 +429,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation      marital_status     education  \\\n",
-       "5595            Private       Craft-repair  Married-civ-spouse       HS-grad   \n",
-       "29818           Private      Other-service            Divorced       HS-grad   \n",
-       "480             Private       Craft-repair  Married-civ-spouse    Assoc-acdm   \n",
-       "28532           Private  Machine-op-inspct  Married-civ-spouse          11th   \n",
-       "32419           Private    Exec-managerial  Married-civ-spouse     Bachelors   \n",
-       "...                 ...                ...                 ...           ...   \n",
-       "7854   Self-emp-not-inc    Farming-fishing       Never-married  Some-college   \n",
-       "7946            Private  Machine-op-inspct            Divorced  Some-college   \n",
-       "12168       Federal-gov  Handlers-cleaners            Divorced  Some-college   \n",
-       "30644           Private      Other-service       Never-married    Assoc-acdm   \n",
-       "28214  Self-emp-not-inc              Sales  Married-civ-spouse       HS-grad   \n",
+       "              workclass        occupation      marital_status     education  \\\n",
+       "23038  Self-emp-not-inc  Transport-moving           Separated       HS-grad   \n",
+       "30795           Private      Craft-repair  Married-civ-spouse       HS-grad   \n",
+       "10734           Private      Craft-repair  Married-civ-spouse  Some-college   \n",
+       "9733            Private      Adm-clerical             Widowed       HS-grad   \n",
+       "13522       Federal-gov      Tech-support       Never-married  Some-college   \n",
+       "...                 ...               ...                 ...           ...   \n",
+       "23795           Private             Sales            Divorced       HS-grad   \n",
+       "8091            Private   Exec-managerial  Married-civ-spouse       Masters   \n",
+       "29601               NaN               NaN  Married-civ-spouse       HS-grad   \n",
+       "26017           Private  Transport-moving       Never-married  Some-college   \n",
+       "6647        Federal-gov      Adm-clerical       Never-married          12th   \n",
        "\n",
        "       hours_per_week        age  \n",
-       "5595               45  38.617936  \n",
-       "29818              40  38.617936  \n",
-       "480                45  38.617936  \n",
-       "28532              40  52.000000  \n",
-       "32419              55  36.000000  \n",
+       "23038              70  38.601083  \n",
+       "30795              45  38.601083  \n",
+       "10734              45  38.601083  \n",
+       "9733               24  69.000000  \n",
+       "13522              24  20.000000  \n",
        "...               ...        ...  \n",
-       "7854               50  38.617936  \n",
-       "7946               40  38.617936  \n",
-       "12168              40  38.617936  \n",
-       "30644              30  38.617936  \n",
-       "28214              50  38.617936  \n",
+       "23795              25  38.601083  \n",
+       "8091               45  38.601083  \n",
+       "29601              20  38.601083  \n",
+       "26017              50  38.601083  \n",
+       "6647               25  38.601083  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -496,7 +477,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the corrupted test data is 0.8818042547827303'"
+       "'The ROC AUC score on the corrupted test data is 0.8784751318388343'"
       ]
      },
      "execution_count": 9,
@@ -525,7 +506,7 @@
    "source": [
     "from jenga.corruptions.generic import MissingValues\n",
     "\n",
-    "marital_status_corruption = MissingValues(column='marital_status', fraction=0.8, na_value=np.nan)\n"
+    "marital_status_corruption = MissingValues(column='marital_status', fraction=0.8, na_value=np.nan)"
    ]
   },
   {
@@ -536,7 +517,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the corrupted test data is 0.8334395757145934'"
+       "'The ROC AUC score on the corrupted test data is 0.8173750037271653'"
       ]
      },
      "execution_count": 11,
@@ -587,52 +568,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>5595</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Craft-repair</td>\n",
+       "      <th>23038</th>\n",
+       "      <td>Self-emp-not-inc</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>NaN</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>45</td>\n",
-       "      <td>60</td>\n",
+       "      <td>70</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>29818</td>\n",
+       "      <th>30795</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Divorced</td>\n",
+       "      <td>Craft-repair</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>24</td>\n",
+       "      <td>45</td>\n",
+       "      <td>34</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>480</td>\n",
+       "      <th>10734</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>Assoc-acdm</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>45</td>\n",
-       "      <td>33</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28532</td>\n",
+       "      <th>9733</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>11th</td>\n",
-       "      <td>40</td>\n",
-       "      <td>52</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>24</td>\n",
+       "      <td>69</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>32419</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Exec-managerial</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
-       "      <td>55</td>\n",
-       "      <td>36</td>\n",
+       "      <th>13522</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Tech-support</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>24</td>\n",
+       "      <td>20</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -641,49 +622,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7854</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
+       "      <th>23795</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Sales</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>50</td>\n",
+       "      <td>HS-grad</td>\n",
        "      <td>25</td>\n",
+       "      <td>31</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7946</td>\n",
+       "      <th>8091</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>29</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Masters</td>\n",
+       "      <td>45</td>\n",
+       "      <td>59</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12168</td>\n",
-       "      <td>Federal-gov</td>\n",
-       "      <td>Handlers-cleaners</td>\n",
+       "      <th>29601</th>\n",
        "      <td>NaN</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>20</td>\n",
+       "      <td>65</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>30644</td>\n",
+       "      <th>26017</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>Assoc-acdm</td>\n",
-       "      <td>30</td>\n",
-       "      <td>37</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>50</td>\n",
+       "      <td>25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28214</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Sales</td>\n",
+       "      <th>6647</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>NaN</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>50</td>\n",
-       "      <td>37</td>\n",
+       "      <td>12th</td>\n",
+       "      <td>25</td>\n",
+       "      <td>21</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -691,31 +672,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation      marital_status     education  \\\n",
-       "5595            Private       Craft-repair                 NaN       HS-grad   \n",
-       "29818           Private      Other-service            Divorced       HS-grad   \n",
-       "480             Private       Craft-repair                 NaN    Assoc-acdm   \n",
-       "28532           Private  Machine-op-inspct                 NaN          11th   \n",
-       "32419           Private    Exec-managerial  Married-civ-spouse     Bachelors   \n",
-       "...                 ...                ...                 ...           ...   \n",
-       "7854   Self-emp-not-inc    Farming-fishing                 NaN  Some-college   \n",
-       "7946            Private  Machine-op-inspct            Divorced  Some-college   \n",
-       "12168       Federal-gov  Handlers-cleaners                 NaN  Some-college   \n",
-       "30644           Private      Other-service                 NaN    Assoc-acdm   \n",
-       "28214  Self-emp-not-inc              Sales                 NaN       HS-grad   \n",
+       "              workclass        occupation      marital_status     education  \\\n",
+       "23038  Self-emp-not-inc  Transport-moving                 NaN       HS-grad   \n",
+       "30795           Private      Craft-repair  Married-civ-spouse       HS-grad   \n",
+       "10734           Private      Craft-repair                 NaN  Some-college   \n",
+       "9733            Private      Adm-clerical                 NaN       HS-grad   \n",
+       "13522       Federal-gov      Tech-support       Never-married  Some-college   \n",
+       "...                 ...               ...                 ...           ...   \n",
+       "23795           Private             Sales                 NaN       HS-grad   \n",
+       "8091            Private   Exec-managerial  Married-civ-spouse       Masters   \n",
+       "29601               NaN               NaN                 NaN       HS-grad   \n",
+       "26017           Private  Transport-moving                 NaN  Some-college   \n",
+       "6647        Federal-gov      Adm-clerical                 NaN          12th   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "5595               45   60  \n",
-       "29818              40   24  \n",
-       "480                45   33  \n",
-       "28532              40   52  \n",
-       "32419              55   36  \n",
+       "23038              70   35  \n",
+       "30795              45   34  \n",
+       "10734              45   35  \n",
+       "9733               24   69  \n",
+       "13522              24   20  \n",
        "...               ...  ...  \n",
-       "7854               50   25  \n",
-       "7946               40   29  \n",
-       "12168              40   38  \n",
-       "30644              30   37  \n",
-       "28214              50   37  \n",
+       "23795              25   31  \n",
+       "8091               45   59  \n",
+       "29601              20   65  \n",
+       "26017              50   25  \n",
+       "6647               25   21  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -744,12 +725,12 @@
     {
      "data": {
       "text/plain": [
-       "Married-civ-spouse       12038\n",
-       "Never-married             8497\n",
-       "Divorced                  3542\n",
-       "Widowed                    807\n",
-       "Separated                  806\n",
-       "Married-spouse-absent      338\n",
+       "Married-civ-spouse       11996\n",
+       "Never-married             8545\n",
+       "Divorced                  3540\n",
+       "Separated                  824\n",
+       "Widowed                    791\n",
+       "Married-spouse-absent      332\n",
        "Married-AF-spouse           20\n",
        "Name: marital_status, dtype: int64"
       ]
@@ -799,52 +780,52 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>5595</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Craft-repair</td>\n",
+       "      <th>23038</th>\n",
+       "      <td>Self-emp-not-inc</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>45</td>\n",
-       "      <td>60</td>\n",
+       "      <td>70</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>29818</td>\n",
+       "      <th>30795</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
-       "      <td>Divorced</td>\n",
+       "      <td>Craft-repair</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
        "      <td>HS-grad</td>\n",
-       "      <td>40</td>\n",
-       "      <td>24</td>\n",
+       "      <td>45</td>\n",
+       "      <td>34</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>480</td>\n",
+       "      <th>10734</th>\n",
        "      <td>Private</td>\n",
        "      <td>Craft-repair</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Assoc-acdm</td>\n",
+       "      <td>Some-college</td>\n",
        "      <td>45</td>\n",
-       "      <td>33</td>\n",
+       "      <td>35</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28532</td>\n",
+       "      <th>9733</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>11th</td>\n",
-       "      <td>40</td>\n",
-       "      <td>52</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>24</td>\n",
+       "      <td>69</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>32419</td>\n",
-       "      <td>Private</td>\n",
-       "      <td>Exec-managerial</td>\n",
-       "      <td>Married-civ-spouse</td>\n",
-       "      <td>Bachelors</td>\n",
-       "      <td>55</td>\n",
-       "      <td>36</td>\n",
+       "      <th>13522</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Tech-support</td>\n",
+       "      <td>Never-married</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>24</td>\n",
+       "      <td>20</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -853,49 +834,49 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7854</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Farming-fishing</td>\n",
+       "      <th>23795</th>\n",
+       "      <td>Private</td>\n",
+       "      <td>Sales</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>50</td>\n",
+       "      <td>HS-grad</td>\n",
        "      <td>25</td>\n",
+       "      <td>31</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>7946</td>\n",
+       "      <th>8091</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Machine-op-inspct</td>\n",
-       "      <td>Divorced</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>29</td>\n",
+       "      <td>Exec-managerial</td>\n",
+       "      <td>Married-civ-spouse</td>\n",
+       "      <td>Masters</td>\n",
+       "      <td>45</td>\n",
+       "      <td>59</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>12168</td>\n",
-       "      <td>Federal-gov</td>\n",
-       "      <td>Handlers-cleaners</td>\n",
+       "      <th>29601</th>\n",
+       "      <td>NaN</td>\n",
+       "      <td>NaN</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Some-college</td>\n",
-       "      <td>40</td>\n",
-       "      <td>38</td>\n",
+       "      <td>HS-grad</td>\n",
+       "      <td>20</td>\n",
+       "      <td>65</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>30644</td>\n",
+       "      <th>26017</th>\n",
        "      <td>Private</td>\n",
-       "      <td>Other-service</td>\n",
+       "      <td>Transport-moving</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>Assoc-acdm</td>\n",
-       "      <td>30</td>\n",
-       "      <td>37</td>\n",
+       "      <td>Some-college</td>\n",
+       "      <td>50</td>\n",
+       "      <td>25</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>28214</td>\n",
-       "      <td>Self-emp-not-inc</td>\n",
-       "      <td>Sales</td>\n",
+       "      <th>6647</th>\n",
+       "      <td>Federal-gov</td>\n",
+       "      <td>Adm-clerical</td>\n",
        "      <td>Married-civ-spouse</td>\n",
-       "      <td>HS-grad</td>\n",
-       "      <td>50</td>\n",
-       "      <td>37</td>\n",
+       "      <td>12th</td>\n",
+       "      <td>25</td>\n",
+       "      <td>21</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -903,31 +884,31 @@
        "</div>"
       ],
       "text/plain": [
-       "              workclass         occupation      marital_status     education  \\\n",
-       "5595            Private       Craft-repair  Married-civ-spouse       HS-grad   \n",
-       "29818           Private      Other-service            Divorced       HS-grad   \n",
-       "480             Private       Craft-repair  Married-civ-spouse    Assoc-acdm   \n",
-       "28532           Private  Machine-op-inspct  Married-civ-spouse          11th   \n",
-       "32419           Private    Exec-managerial  Married-civ-spouse     Bachelors   \n",
-       "...                 ...                ...                 ...           ...   \n",
-       "7854   Self-emp-not-inc    Farming-fishing  Married-civ-spouse  Some-college   \n",
-       "7946            Private  Machine-op-inspct            Divorced  Some-college   \n",
-       "12168       Federal-gov  Handlers-cleaners  Married-civ-spouse  Some-college   \n",
-       "30644           Private      Other-service  Married-civ-spouse    Assoc-acdm   \n",
-       "28214  Self-emp-not-inc              Sales  Married-civ-spouse       HS-grad   \n",
+       "              workclass        occupation      marital_status     education  \\\n",
+       "23038  Self-emp-not-inc  Transport-moving  Married-civ-spouse       HS-grad   \n",
+       "30795           Private      Craft-repair  Married-civ-spouse       HS-grad   \n",
+       "10734           Private      Craft-repair  Married-civ-spouse  Some-college   \n",
+       "9733            Private      Adm-clerical  Married-civ-spouse       HS-grad   \n",
+       "13522       Federal-gov      Tech-support       Never-married  Some-college   \n",
+       "...                 ...               ...                 ...           ...   \n",
+       "23795           Private             Sales  Married-civ-spouse       HS-grad   \n",
+       "8091            Private   Exec-managerial  Married-civ-spouse       Masters   \n",
+       "29601               NaN               NaN  Married-civ-spouse       HS-grad   \n",
+       "26017           Private  Transport-moving  Married-civ-spouse  Some-college   \n",
+       "6647        Federal-gov      Adm-clerical  Married-civ-spouse          12th   \n",
        "\n",
        "       hours_per_week  age  \n",
-       "5595               45   60  \n",
-       "29818              40   24  \n",
-       "480                45   33  \n",
-       "28532              40   52  \n",
-       "32419              55   36  \n",
+       "23038              70   35  \n",
+       "30795              45   34  \n",
+       "10734              45   35  \n",
+       "9733               24   69  \n",
+       "13522              24   20  \n",
        "...               ...  ...  \n",
-       "7854               50   25  \n",
-       "7946               40   29  \n",
-       "12168              40   38  \n",
-       "30644              30   37  \n",
-       "28214              50   37  \n",
+       "23795              25   31  \n",
+       "8091               45   59  \n",
+       "29601              20   65  \n",
+       "26017              50   25  \n",
+       "6647               25   21  \n",
        "\n",
        "[6513 rows x 6 columns]"
       ]
@@ -951,7 +932,7 @@
     {
      "data": {
       "text/plain": [
-       "'The ROC AUC score on the corrupted test data is 0.8276910272741881'"
+       "'The ROC AUC score on the corrupted test data is 0.8173750037271653'"
       ]
      },
      "execution_count": 15,
@@ -982,7 +963,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/references/.gitignore b/references/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/reports/figures/.gitignore b/reports/figures/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 2d5807e..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-#opencv-python
-keras==2.2.4
-#pillow
-#cv2
-scikit-learn==0.21.3
-pandas==0.25.1
-jupyter==1.0.0
-tensorflow==1.13.1
-tensorflow-data-validation==0.13.0
-matplotlib
-imgaug
-imagecorruptions
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..d42087e
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,136 @@
+# This file is used to configure your project.
+# Read more about the various options under:
+# http://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files
+
+[metadata]
+name = jenga
+description = Jenga is an open source experimentation library that allows data science practititioners and researchers to study the effect of common data corruptions (e.g., missing values, broken character encodings) on the prediction quality of their ML models.
+author = Sebastian Schelter
+author-email = s.schelter@uva.nl
+license = gpl3
+long-description = file: README.md
+long-description-content-type = text/markdown; charset=UTF-8; variant=GFM
+url = https://github.com/schelterlabs/jenga
+project-urls =
+    Documentation = https://github.com/schelterlabs/jenga
+# Change if running only on Windows, Mac or Linux (comma-separated)
+platforms = any
+# Add here all kinds of additional classifiers as defined under
+# https://pypi.python.org/pypi?%3Aaction=list_classifiers
+classifiers =
+    Development Status :: 4 - Beta
+    Programming Language :: Python
+
+[options]
+zip_safe = False
+packages = find:
+include_package_data = True
+package_dir =
+    =src
+# DON'T CHANGE THE FOLLOWING LINE! IT WILL BE UPDATED BY PYSCAFFOLD!
+setup_requires = pyscaffold>=3.2a0,<3.3a0
+# Add here dependencies of your project (semicolon/line-separated), e.g.
+# install_requires = numpy; scipy
+# The usage of test_requires is discouraged, see `Dependency Management` docs
+# tests_require = pytest; pytest-cov
+# Require a specific Python version, e.g. Python 2.7 or >= 3.4
+# python_requires = >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*
+python_requires = >=3.7.*,<3.10.*
+install_requires =
+    scikit-learn
+    pandas
+
+[options.packages.find]
+where = src
+exclude =
+    tests
+
+[options.extras_require]
+# Add here additional requirements for extra features, to install with:
+# `pip install jenga[all]` like:
+all =
+    imgaug
+    imagecorruptions
+    tensorflow
+    tensorflow-data-validation
+
+image =
+    imgaug
+    tensorflow
+    imagecorruptions
+
+validation =
+    tensorflow
+    tensorflow-data-validation
+
+# Add here test requirements (semicolon/line-separated)
+testing =
+    pytest
+    pytest-cov
+
+[options.entry_points]
+# Add here console scripts like:
+# console_scripts =
+#     script_name = jenga.module:function
+# For example:
+# console_scripts =
+#     fibonacci = jenga.skeleton:run
+# And any other entry points, for example:
+# pyscaffold.cli =
+#     awesome = pyscaffoldext.awesome.extension:AwesomeExtension
+
+[test]
+# py.test options when running `python setup.py test`
+# addopts = --verbose
+extras = True
+
+[tool:pytest]
+# Options for py.test:
+# Specify command line options as you would do when invoking py.test directly.
+# e.g. --cov-report html (or xml) for html/xml output or --junitxml junit.xml
+# in order to write a coverage file that can be read by Jenkins.
+addopts =
+    --cov jenga --cov-report term-missing
+    --verbose
+norecursedirs =
+    dist
+    build
+    .tox
+testpaths = tests
+
+[aliases]
+dists = bdist_wheel
+
+[bdist_wheel]
+# Use this option if your package is pure-python
+universal = 1
+
+[build_sphinx]
+source_dir = docs
+build_dir = build/sphinx
+
+[devpi:upload]
+# Options for the devpi: PyPI server and packaging tool
+# VCS export must be deactivated since we are using setuptools-scm
+no-vcs = 1
+formats = bdist_wheel
+
+[flake8]
+# Some sane defaults for the code style checker flake8
+exclude =
+    .tox
+    build
+    dist
+    .eggs
+    docs/conf.py
+
+[pyscaffold]
+# PyScaffold's parameters when the project was created.
+# This will be used when updating. Do not change!
+version = 3.2.3
+package = jenga
+extensions =
+    no_skeleton
+    markdown
+    pre_commit
+    dsproject
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..96e0088
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+"""
+    Setup file for jenga.
+    Use setup.cfg to configure your project.
+
+    This file was generated with PyScaffold 3.2.3.
+    PyScaffold helps you to put up the scaffold of your new Python project.
+    Learn more under: https://pyscaffold.org/
+"""
+import sys
+from pkg_resources import VersionConflict, require
+from setuptools import setup
+
+try:
+    require('setuptools>=38.3')
+except VersionConflict:
+    print("Error: version of setuptools is too old (<38.3)!")
+    sys.exit(1)
+
+
+if __name__ == "__main__":
+    setup(use_pyscaffold=True)
diff --git a/src/jenga/__init__.py b/src/jenga/__init__.py
new file mode 100644
index 0000000..c99a72a
--- /dev/null
+++ b/src/jenga/__init__.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+from pkg_resources import get_distribution, DistributionNotFound
+
+try:
+    # Change here if project is renamed and does not equal the package name
+    dist_name = __name__
+    __version__ = get_distribution(dist_name).version
+except DistributionNotFound:
+    __version__ = 'unknown'
+finally:
+    del get_distribution, DistributionNotFound
diff --git a/src/jenga/basis.py b/src/jenga/basis.py
new file mode 100644
index 0000000..5db59d1
--- /dev/null
+++ b/src/jenga/basis.py
@@ -0,0 +1,647 @@
+import random
+from abc import ABC, abstractmethod
+from typing import Any, Dict, List, Optional, Tuple
+
+import numpy as np
+import pandas as pd
+from sklearn.base import BaseEstimator
+from sklearn.compose import ColumnTransformer
+from sklearn.impute import SimpleImputer
+from sklearn.linear_model import SGDClassifier, SGDRegressor
+from sklearn.metrics import (
+    f1_score,
+    make_scorer,
+    mean_absolute_error,
+    mean_squared_error,
+    roc_auc_score
+)
+from sklearn.model_selection import GridSearchCV
+from sklearn.pipeline import Pipeline
+from sklearn.preprocessing import OneHotEncoder, StandardScaler
+
+from .utils import BINARY_CLASSIFICATION, MULTI_CLASS_CLASSIFICATION, REGRESSION
+
+
+class Task(ABC):
+    def __init__(
+        self,
+        train_data: pd.DataFrame,
+        train_labels: pd.Series,
+        test_data: pd.DataFrame,
+        test_labels: pd.Series,
+        categorical_columns: List[str] = [],
+        numerical_columns: List[str] = [],
+        text_columns: List[str] = [],
+        is_image_data: bool = False,
+        seed: Optional[int] = None
+    ):
+        """
+        Abstract base class for all Tasks. It defines the interface and a fair amount of functionality, \
+            such as fitting a baseline model, inherited to child classes.
+
+        Args:
+            train_data (pd.DataFrame): Training data
+            train_labels (pd.Series): Training labels
+            test_data (pd.DataFrame): Test data
+            test_labels (pd.Series): Test labels
+            categorical_columns (List[str], optional): List of categorical column names. Defaults to [].
+            numerical_columns (List[str], optional): List of numerical column names. Defaults to [].
+            text_columns (List[str], optional): List of text column names. Defaults to [].
+            is_image_data (bool, optional): Indicates whether data are images. Defaults to False.
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        self._baseline_model = None
+        self._task_type: Optional[int] = None
+
+        self.train_data = train_data
+        self.train_labels = train_labels
+        self.test_data = test_data
+        self.test_labels = test_labels
+        self.categorical_columns = categorical_columns
+        self.numerical_columns = numerical_columns
+        self.text_columns = text_columns
+        self.is_image_data = is_image_data
+        self._seed = seed
+
+        # Fix random seeds for reproducibility
+        if self._seed:
+            random.seed(self._seed)
+            np.random.seed(self._seed)
+
+            try:
+                import tensorflow as tf
+                tf.random.set_seed(self._seed)
+            except ImportError:
+                pass
+
+    def _get_task_type_of_data(self) -> Optional[int]:
+        """
+        Helper method to check the given label's task type (classification/multi-class/regression).
+
+        Returns:
+            Optional[int]: Integer encoded task type
+        """
+
+        task_type = None
+
+        if pd.api.types.is_numeric_dtype(self.train_labels) and pd.api.types.is_numeric_dtype(self.test_labels):
+            task_type = REGRESSION
+
+        elif pd.api.types.is_categorical_dtype(self.train_labels) and pd.api.types.is_categorical_dtype(self.test_labels):
+            num_test_classes = len(self.test_labels.dtype.categories)
+            num_train_classes = len(self.train_labels.dtype.categories)
+
+            if num_test_classes == num_train_classes:
+
+                if num_test_classes == 2:
+                    task_type = BINARY_CLASSIFICATION
+
+                elif num_test_classes > 2:
+                    task_type = MULTI_CLASS_CLASSIFICATION
+
+        return task_type
+
+    def fit_baseline_model(self, train_data: Optional[pd.DataFrame] = None, train_labels: Optional[pd.Series] = None) -> BaseEstimator:
+        """
+        Fit a baseline model. If no data is given (default), it uses the task's train data and creates the attribute `_baseline_model`. \
+            If data is given, it trains this data.
+
+        Args:
+            train_data (Optional[pd.DataFrame], optional): Data to train. Defaults to None.
+            train_labels (Optional[pd.Series], optional): Labels to train. Defaults to None.
+
+        Raises:
+            ValueError: If `train_data` is given but `train_labels` not or vice versa
+
+        Returns:
+            BaseEstimator: Trained model
+        """
+
+        if (train_data is None and train_labels is not None) or (train_data is not None and train_labels is None):
+            raise ValueError("either set both parameters (train_data, train_labels) or non")
+
+        use_original_data = train_data is None
+
+        # shortcut if model is already trained
+        if use_original_data and self._baseline_model:
+            return self._baseline_model
+
+        if use_original_data:
+            train_data = self.train_data.copy()
+            train_labels = self.train_labels.copy()
+
+        for col in self.categorical_columns:
+            train_data[col] = train_data[col].astype(str)
+
+        categorical_preprocessing = Pipeline(
+            [
+                ('mark_missing', SimpleImputer(strategy='most_frequent')),
+                ('one_hot_encode', OneHotEncoder(handle_unknown='ignore'))
+            ]
+        )
+
+        numerical_preprocessing = Pipeline(
+            [
+                ('mark_missing', SimpleImputer(strategy='mean')),
+                ('scaling',  StandardScaler())
+            ]
+        )
+
+        feature_transformation = ColumnTransformer(transformers=[
+                ('categorical_features', categorical_preprocessing, self.categorical_columns),
+                ('scaled_numeric', numerical_preprocessing, self.numerical_columns)
+            ]
+        )
+
+        param_grid, pipeline, scorer = self._get_pipeline_grid_scorer_tuple(feature_transformation)
+        refit = list(scorer.keys())[0]
+
+        search = GridSearchCV(pipeline, param_grid, scoring=scorer, n_jobs=-1, refit=refit)
+        model = search.fit(train_data, train_labels).best_estimator_
+
+        # only set baseline model attribute if it is trained on the original task data
+        if use_original_data:
+            self._baseline_model = model
+
+        return model
+
+    @abstractmethod
+    def _check_data(self):
+        """
+        Forces child class to implement data checking.
+
+        Raises:
+            Exception: If child class does not set the attribute `_task_type`
+        """
+
+        # TODO: maybe we also want to check whether all the column names exist in the dataframe
+
+        if self._task_type is None:
+            raise Exception("Class attribute '_task_type' is not set!")
+
+    @abstractmethod
+    def get_baseline_performance(self) -> float:
+        """
+        Forces child class to implement baseline performance metric.
+
+        Raises:
+            Exception: If no baseline model is trained yet
+
+        Returns:
+            float: Baseline performance on test data
+        """
+
+        if not self._baseline_model:
+            raise Exception("First fit a baseline model")
+
+    @abstractmethod
+    def score_on_test_data(self, predictions: pd.array) -> float:
+        """
+        Forces child class to implement scoring of given `predictions` against test data.
+
+        Args:
+            predictions (pd.array): Either 1-D array if models `predict` method used or n-D array for `predict_proba`, \
+                where n is the number of classes
+
+        Returns:
+            float: Score of given `predictions`
+        """
+
+        pass
+
+    @abstractmethod
+    def _get_pipeline_grid_scorer_tuple(self, feature_transformation: ColumnTransformer) -> Tuple[Dict[str, object], Any, Dict[str, Any]]:
+        """
+        Forces child class to define task specific `Pipeline`, hyperparameter grid for HPO, and scorer for baseline model training.
+        This helps to reduce redundant code.
+
+        Args:
+            feature_transformation (ColumnTransformer): Basic preprocessing for columns. Given by `fit_baseline_model` that calls this method
+
+        Returns:
+            Tuple[Dict[str, object], Any, Dict[str, Any]]: Task specific parts to build baseline model
+        """
+
+        pass
+
+
+class BinaryClassificationTask(Task):
+
+    def __init__(
+        self,
+        train_data: pd.DataFrame,
+        train_labels: pd.Series,
+        test_data: pd.DataFrame,
+        test_labels: pd.Series,
+        categorical_columns: List[str] = [],
+        numerical_columns: List[str] = [],
+        text_columns: List[str] = [],
+        is_image_data: bool = False,
+        seed: Optional[int] = None
+    ):
+        """
+        Class that represents a binary classification task. \
+            If `is_image_data = False` it forces the `train_labels` and `test_labels` to be of a `categorical_dtype`.
+        It implements abstract methods defined by parent class `Task`.
+
+        Args:
+            train_data (pd.DataFrame): Training data
+            train_labels (pd.Series): Training labels
+            test_data (pd.DataFrame): Test data
+            test_labels (pd.Series): Test labels
+            categorical_columns (List[str], optional): List of categorical column names. Defaults to [].
+            numerical_columns (List[str], optional): List of numerical column names. Defaults to [].
+            text_columns (List[str], optional): List of text column names. Defaults to [].
+            is_image_data (bool, optional): Indicates whether data are images. Defaults to False.
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            text_columns=text_columns,
+            is_image_data=is_image_data,
+            seed=seed
+        )
+
+        self._task_type = BINARY_CLASSIFICATION
+        self._check_data()
+
+    def _check_data(self):
+        """
+        Checks whether or not the given data/labels are of `categorical_dtype`.
+
+        Raises:
+            ValueError: If labels does not fit the constrains for a binary classification task.
+        """
+
+        super()._check_data()
+
+        if self._get_task_type_of_data() != BINARY_CLASSIFICATION and not self.is_image_data:
+            raise ValueError("Downloaded data is not a binary classification task.")
+
+    def _get_pipeline_grid_scorer_tuple(
+        self,
+        feature_transformation: ColumnTransformer
+    ) -> Tuple[Dict[str, object], Any, Dict[str, Any]]:
+        """
+        Binary classification specific default `Pipeline`, hyperparameter grid for HPO, and scorer for baseline model training.
+
+        Args:
+            feature_transformation (ColumnTransformer): Basic preprocessing for columns. Given by `fit_baseline_model` that calls this method
+
+        Returns:
+            Tuple[Dict[str, object], Any, Dict[str, Any]]: Binary classification specific parts to build baseline model
+        """
+
+        param_grid = {
+            'learner__loss': ['log'],
+            'learner__penalty': ['l2'],
+            'learner__alpha': [0.00001, 0.0001, 0.001, 0.01]
+        }
+
+        pipeline = Pipeline(
+            [
+                ('features', feature_transformation),
+                ('learner', SGDClassifier(max_iter=1000, n_jobs=-1))
+            ]
+        )
+
+        scorer = {
+            "ROC/AUC": make_scorer(roc_auc_score, needs_proba=True)
+        }
+
+        return param_grid, pipeline, scorer
+
+    def get_baseline_performance(self) -> float:
+        """
+        By default calculate the ROC/AUC score of the baseline model based on test data.
+
+        Returns:
+            float: Baseline performance on test data
+        """
+
+        super().get_baseline_performance()
+
+        predicted_label_probabilities = self._baseline_model.predict_proba(self.test_data)
+        return self.score_on_test_data(predicted_label_probabilities)
+
+    def score_on_test_data(self, predictions: pd.array) -> float:
+        """
+        By default calculate the ROC/AUC score of the given `predictions` against test data.
+
+        Args:
+            predictions (pd.array): n-D array given by a model's `predict_proba` method, where n is the number of classes
+
+        Returns:
+            float: ROC/AUC score of given `predictions`
+        """
+
+        return roc_auc_score(self.test_labels, predictions[:, 1])
+
+
+class MultiClassClassificationTask(Task):
+
+    def __init__(
+        self,
+        train_data: pd.DataFrame,
+        train_labels: pd.Series,
+        test_data: pd.DataFrame,
+        test_labels: pd.Series,
+        categorical_columns: List[str] = [],
+        numerical_columns: List[str] = [],
+        text_columns: List[str] = [],
+        is_image_data: bool = False,
+        seed: Optional[int] = None
+    ):
+        """
+        Class that represents a multi-class classification task. \
+            If `is_image_data = False` it forces the `train_labels` and `test_labels` to be of a `categorical_dtype`.
+        It implements abstract methods defined by parent class `Task`.
+
+        Args:
+            train_data (pd.DataFrame): Training data
+            train_labels (pd.Series): Training labels
+            test_data (pd.DataFrame): Test data
+            test_labels (pd.Series): Test labels
+            categorical_columns (List[str], optional): List of categorical column names. Defaults to [].
+            numerical_columns (List[str], optional): List of numerical column names. Defaults to [].
+            text_columns (List[str], optional): List of text column names. Defaults to [].
+            is_image_data (bool, optional): Indicates whether data are images. Defaults to False.
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            text_columns=text_columns,
+            is_image_data=is_image_data,
+            seed=seed
+        )
+
+        self._task_type = MULTI_CLASS_CLASSIFICATION
+        self._check_data()
+
+    def _check_data(self):
+        """
+        Checks whether or not the given data/labels are of `categorical_dtype`.
+
+        Raises:
+            ValueError: If labels does not fit the constrains for a multi-class classification task.
+        """
+
+        super()._check_data()
+
+        if self._get_task_type_of_data() != MULTI_CLASS_CLASSIFICATION and not self.is_image_data:
+            raise ValueError("Downloaded data is not a multi-class classification task.")
+
+    def _get_pipeline_grid_scorer_tuple(
+        self,
+        feature_transformation: ColumnTransformer
+    ) -> Tuple[Dict[str, object], Any, Dict[str, Any]]:
+        """
+        Multi-class classification specific default `Pipeline`, hyperparameter grid for HPO, and scorer for baseline model training.
+
+        Args:
+            feature_transformation (ColumnTransformer): Basic preprocessing for columns. Given by `fit_baseline_model` that calls this method
+
+        Returns:
+            Tuple[Dict[str, object], Any, Dict[str, Any]]: Multi-class classification specific parts to build baseline model
+        """
+
+        param_grid = {
+            'learner__loss': ['log'],
+            'learner__penalty': ['l2'],
+            'learner__alpha': [0.00001, 0.0001, 0.001, 0.01]
+        }
+
+        pipeline = Pipeline(
+            [
+                ('features', feature_transformation),
+                ('learner', SGDClassifier(max_iter=1000, n_jobs=-1))
+            ]
+        )
+
+        scorer = {
+            "F1": make_scorer(f1_score, average="macro")
+        }
+
+        return param_grid, pipeline, scorer
+
+    def get_baseline_performance(self) -> float:
+        """
+        By default calculate the F1 score of the baseline model based on test data.
+
+        Calculate the ROC/AUC value for a test set that does not contains samples from all possible classes is not supported by `roc_auc_score`. \
+            This is why default score differs from the binary-classification score.
+
+        Returns:
+            float: Baseline performance on test data
+        """
+
+        super().get_baseline_performance()
+
+        predictions = self._baseline_model.predict(self.test_data)
+        return self.score_on_test_data(predictions)
+
+    def score_on_test_data(self, predictions: pd.array) -> float:
+        """
+        By default calculate the F1 score of the given `predictions` against test data.
+
+        Calculate the ROC/AUC value for a test set that does not contains samples from all possible classes is not supported by `roc_auc_score`. \
+            This is why the default score differs from the binary-classification score.
+
+        Args:
+            predictions (pd.array): 1-D array given by a model's `predict` method
+
+        Returns:
+            float: F1 score of given `predictions`
+        """
+
+        return f1_score(self.test_labels, predictions, average="macro")
+
+
+class RegressionTask(Task):
+
+    def __init__(
+        self,
+        train_data: pd.DataFrame,
+        train_labels: pd.Series,
+        test_data: pd.DataFrame,
+        test_labels: pd.Series,
+        categorical_columns: List[str] = [],
+        numerical_columns: List[str] = [],
+        text_columns: List[str] = [],
+        is_image_data: bool = False,
+        seed: Optional[int] = None
+    ):
+        """
+        Class that represents a regression task. Forces the `train_labels` and `test_labels` to be of a `numeric_dtype`.
+        It implements abstract methods defined by parent class `Task`.
+
+        Args:
+            train_data (pd.DataFrame): Training data
+            train_labels (pd.Series): Training labels
+            test_data (pd.DataFrame): Test data
+            test_labels (pd.Series): Test labels
+            categorical_columns (List[str], optional): List of categorical column names. Defaults to [].
+            numerical_columns (List[str], optional): List of numerical column names. Defaults to [].
+            text_columns (List[str], optional): List of text column names. Defaults to [].
+            is_image_data (bool, optional): Indicates whether data are images. Defaults to False.
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            text_columns=text_columns,
+            is_image_data=is_image_data,
+            seed=seed
+        )
+
+        self._task_type = REGRESSION
+        self._check_data()
+
+    def _check_data(self):
+        """
+        Checks whether or not the given data/labels are of `numeric_dtype`.
+
+        Raises:
+            ValueError: If labels does not fit the constrains for a regression task.
+        """
+
+        super()._check_data()
+
+        if self._get_task_type_of_data() != REGRESSION:
+            raise ValueError("Downloaded data is not a regression task.")
+
+    def _get_pipeline_grid_scorer_tuple(
+        self,
+        feature_transformation: ColumnTransformer
+    ) -> Tuple[Dict[str, object], Any, Dict[str, Any]]:
+        """
+        Regression specific default `Pipeline`, hyperparameter grid for HPO, and scorer for baseline model training.
+
+        Args:
+            feature_transformation (ColumnTransformer): Basic preprocessing for columns. Given by `fit_baseline_model` that calls this method
+
+        Returns:
+            Tuple[Dict[str, object], Any, Dict[str, Any]]: Regression specific parts to build baseline model
+        """
+
+        param_grid = {
+            'learner__loss': ['squared_loss', 'huber'],
+            'learner__penalty': ['l2'],
+            'learner__alpha': [0.00001, 0.0001, 0.001, 0.01]
+        }
+
+        pipeline = Pipeline(
+            [
+                ('features', feature_transformation),
+                ('learner', SGDRegressor(max_iter=1000))
+            ]
+        )
+
+        scorer = {
+            "MSE": make_scorer(mean_squared_error, greater_is_better=False),
+            "MAE": make_scorer(mean_absolute_error, greater_is_better=False)
+        }
+
+        return param_grid, pipeline, scorer
+
+    def get_baseline_performance(self) -> float:
+        """
+        By default calculate the MSE of the baseline model based on test data.
+
+        Returns:
+            float: Baseline performance on test data
+        """
+
+        super().get_baseline_performance()
+
+        predictions = self._baseline_model.predict(self.test_data)
+        return self.score_on_test_data(predictions)
+
+    def score_on_test_data(self, predictions: pd.array) -> float:
+        """
+        By default calculate the MSE of the given `predictions` against test data.
+
+        Args:
+            predictions (pd.array): 1-D array given by a model's `predict` method
+
+        Returns:
+            float: MSE of given `predictions`
+        """
+
+        return mean_squared_error(self.test_labels, predictions)
+
+
+# Abstract base class for all data corruptions
+class DataCorruption:
+
+    # Abstract base method for corruptions, they have to return a corrupted copied of the dataframe
+    @abstractmethod
+    def transform(self, data):
+        pass
+
+    def __str__(self):
+        return f"{self.__class__.__name__}: {self.__dict__}"
+
+
+class TabularCorruption(DataCorruption):
+    def __init__(self, column, fraction, sampling='CAR'):
+        '''
+        Corruptions for structured data
+        Input:
+        column:    column to perturb, string
+        fraction:   fraction of rows to corrupt, float between 0 and 1
+        sampling:   sampling mechanism for corruptions, options are completely at random ('CAR'),
+                     at random ('AR'), not at random ('NAR')
+        '''
+        self.column = column
+        self.fraction = fraction
+        self.sampling = sampling
+
+    def get_dtype(self, df):
+        numeric_cols = [c for c in df.columns if pd.api.types.is_numeric_dtype(df[c])]
+        non_numeric_cols = [c for c in df.columns if c not in numeric_cols]
+        return numeric_cols, non_numeric_cols
+
+    def sample_rows(self, data):
+
+        # Completely At Random
+        if self.sampling.endswith('CAR'):
+            rows = np.random.permutation(data.index)[:int(len(data)*self.fraction)]
+        elif self.sampling.endswith('NAR') or self.sampling.endswith('AR'):
+            n_values_to_discard = int(len(data) * min(self.fraction, 1.0))
+            perc_lower_start = np.random.randint(0, len(data) - n_values_to_discard)
+            perc_idx = range(perc_lower_start, perc_lower_start + n_values_to_discard)
+
+            # Not At Random
+            if self.sampling.endswith('NAR'):
+                # pick a random percentile of values in this column
+                rows = data[self.column].sort_values().iloc[perc_idx].index
+
+            # At Random
+            elif self.sampling.endswith('AR'):
+                depends_on_col = np.random.choice(list(set(data.columns) - {self.column}))
+                # pick a random percentile of values in other column
+                rows = data[depends_on_col].sort_values().iloc[perc_idx].index
+
+        else:
+            ValueError(f"sampling type '{self.sampling}' not recognized")
+
+        return rows
diff --git a/jenga/corruptions/generic.py b/src/jenga/corruptions/generic.py
similarity index 68%
rename from jenga/corruptions/generic.py
rename to src/jenga/corruptions/generic.py
index 0d43400..0c7ecc0 100644
--- a/jenga/corruptions/generic.py
+++ b/src/jenga/corruptions/generic.py
@@ -1,26 +1,25 @@
 import numpy as np
-import pandas as pd
-import random
-from jenga.basis import DataCorruption, TabularCorruption
+
+from ..basis import DataCorruption, TabularCorruption
 
 
 # Inject different kinds of missing values
 class MissingValues(TabularCorruption):
 
     def __init__(self, column, fraction, na_value=np.nan, missingness='MCAR'):
-            '''
-            Corruptions for structured data
-            Input: 
-            column:    column to perturb, string
-            fraction:   fraction of rows to corrupt, float between 0 and 1
-            na_value:   value
-            missingness:   sampling mechanism for corruptions, string in ['MCAR', 'MAR', 'MNAR'] 
-            '''
-            self.column = column
-            self.fraction = fraction
-            self.sampling = missingness
-            self.na_value = na_value
-            
+        '''
+        Corruptions for structured data
+        Input:
+        column:    column to perturb, string
+        fraction:   fraction of rows to corrupt, float between 0 and 1
+        na_value:   value
+        missingness:   sampling mechanism for corruptions, string in ['MCAR', 'MAR', 'MNAR']
+        '''
+        self.column = column
+        self.fraction = fraction
+        self.sampling = missingness
+        self.na_value = na_value
+
     def transform(self, data):
         corrupted_data = data.copy(deep=True)
         rows = self.sample_rows(corrupted_data)
@@ -31,21 +30,23 @@ def transform(self, data):
 # Missing Values based on the records' "difficulty" for the model
 class MissingValuesBasedOnEntropy(DataCorruption):
 
-    def __init__(self,
-                 column,
-                 fraction,
-                 most_confident,
-                 model,
-                 data_to_predict_on,
-                 na_value
-                 ):
+    def __init__(
+        self,
+        column,
+        fraction,
+        most_confident,
+        model,
+        data_to_predict_on,
+        na_value
+    ):
         self.column = column
         self.fraction = fraction
         self.most_confident = most_confident
         self.model = model
         self.data_to_predict_on = data_to_predict_on
         self.na_value = na_value
-        DataCorruption.__init__(self)
+
+        super().__init__()
 
     def transform(self, data):
         df = data.copy(deep=True)
@@ -55,6 +56,7 @@ def transform(self, data):
 
         if self.most_confident:
             affected = probas.max(axis=1).argsort()[:cutoff]
+
         else:
             # for samples with the smallest maximum probability the model is most uncertain
             affected = probas.max(axis=1).argsort()[-cutoff:]
@@ -67,37 +69,37 @@ def transform(self, data):
 # Swapping a fraction of the values between two columns, mimics input errors in forms
 # and programming errors during data preparation
 class SwappedValues(TabularCorruption):
-    
-    def __init__(self, column, fraction, sampling = 'CAR', swap_with=None):
-        TabularCorruption.__init__(self, column, fraction, sampling)
+
+    def __init__(self, column, fraction, sampling='CAR', swap_with=None):
+        super().__init__(column, fraction, sampling)
         self.swap_with = swap_with
 
     def transform(self, data):
-        df = data.copy(deep=True)        
+        df = data.copy(deep=True)
         if not self.swap_with:
             self.swap_with = np.random.choice([c for c in data.columns if c != self.column])
 
         rows = self.sample_rows(df)
 
-        tmp_vals = df.loc[rows,self.swap_with].copy(deep=True)
+        tmp_vals = df.loc[rows, self.swap_with].copy(deep=True)
         df.loc[rows, self.swap_with] = df.loc[rows, self.column]
         df.loc[rows, self.column] = tmp_vals
 
         return df
 
+
 class CategoricalShift(TabularCorruption):
     def transform(self, data):
         df = data.copy(deep=True)
         rows = self.sample_rows(df)
         numeric_cols, non_numeric_cols = self.get_dtype(df)
+
         if self.column in numeric_cols:
             print('CategoricalShift implemented only for categorical variables')
             return df
+
         else:
             histogram = df[self.column].value_counts()
             random_other_val = np.random.permutation(histogram.index)
             df.loc[rows, self.column] = df.loc[rows, self.column].replace(histogram.index, random_other_val)
             return df
-
-
-
diff --git a/jenga/corruptions/image.py b/src/jenga/corruptions/image.py
similarity index 68%
rename from jenga/corruptions/image.py
rename to src/jenga/corruptions/image.py
index 2ebc00d..22f2ec4 100644
--- a/jenga/corruptions/image.py
+++ b/src/jenga/corruptions/image.py
@@ -1,8 +1,9 @@
-import imgaug.augmenters as iaa
+import random
 
-from jenga.basis import DataCorruption
+import imgaug.augmenters as iaa
 import numpy as np
-import random
+
+from ..basis import DataCorruption
 
 
 # Base class for image corruptions, for which we rely on the augmentor library
@@ -12,7 +13,7 @@ class ImageCorruption(DataCorruption):
     def __init__(self, fraction, corruptions):
         self.fraction = fraction
         self.corruptions = corruptions
-        DataCorruption.__init__(self)
+        super().__init__()
 
     def transform(self, data):
         corrupted_images = data.copy()
@@ -41,46 +42,46 @@ def transform(self, data):
 class GaussianNoiseCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.GaussianNoise(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.GaussianNoise(severity=severity)])
 
 
 class GlassBlurCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.GlassBlur(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.GlassBlur(severity=severity)])
 
 
 class SnowCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.Snow(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.Snow(severity=severity)])
 
 
 class MotionBlurCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.MotionBlur(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.MotionBlur(severity=severity)])
 
 
 class DefocusBlurCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.DefocusBlur(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.DefocusBlur(severity=severity)])
 
 
 class FogCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.Fog(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.Fog(severity=severity)])
 
 
 class ContrastCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.Contrast(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.Contrast(severity=severity)])
 
 
 class BrightnessCorruption(ImageCorruption):
 
     def __init__(self, fraction, severity):
-        ImageCorruption.__init__(self, fraction, [iaa.imgcorruptlike.Brightness(severity=severity)])
+        super().__init__(fraction, [iaa.imgcorruptlike.Brightness(severity=severity)])
diff --git a/jenga/corruptions/numerical.py b/src/jenga/corruptions/numerical.py
similarity index 96%
rename from jenga/corruptions/numerical.py
rename to src/jenga/corruptions/numerical.py
index a881c17..c61bf48 100644
--- a/jenga/corruptions/numerical.py
+++ b/src/jenga/corruptions/numerical.py
@@ -1,7 +1,9 @@
 import random
+
 import numpy as np
 
-from jenga.basis import TabularCorruption
+from ..basis import TabularCorruption
+
 
 # Add gaussian noise to an attribute, mimics noisy, unreliable measurements
 class GaussianNoise(TabularCorruption):
@@ -36,4 +38,3 @@ def transform(self, data):
             df.loc[rows, self.column] *= scale_factor
 
         return df
-
diff --git a/jenga/corruptions/text.py b/src/jenga/corruptions/text.py
similarity index 92%
rename from jenga/corruptions/text.py
rename to src/jenga/corruptions/text.py
index 5162d50..0f49c52 100644
--- a/jenga/corruptions/text.py
+++ b/src/jenga/corruptions/text.py
@@ -1,6 +1,6 @@
 import random
 
-from jenga.basis import DataCorruption
+from ..basis import DataCorruption
 
 
 # Mimics cases where text is processed with the wrong encoding
@@ -10,7 +10,7 @@ class BrokenCharacters(DataCorruption):
     def __init__(self, column, fraction):
         self.column = column
         self.fraction = fraction
-        DataCorruption.__init__(self)
+        super().__init__()
 
     def transform(self, data):
         corrupted_data = data.copy(deep=True)
@@ -29,8 +29,10 @@ def transform(self, data):
         for index, row in corrupted_data.iterrows():
             if random.random() < self.fraction:
                 column_value = row[self.column]
+
                 for character, replacement in replacements.items():
                     column_value = str(column_value).replace(character, replacement)
+
                 corrupted_data.at[index, self.column] = column_value
 
         return corrupted_data
diff --git a/src/jenga/evaluation/basis.py b/src/jenga/evaluation/basis.py
new file mode 100644
index 0000000..793d36e
--- /dev/null
+++ b/src/jenga/evaluation/basis.py
@@ -0,0 +1,38 @@
+from abc import ABC, abstractmethod
+
+import numpy as np
+import pandas as pd
+from sklearn.base import BaseEstimator
+
+from ..basis import DataCorruption, Task
+from ..utils import BINARY_CLASSIFICATION, MULTI_CLASS_CLASSIFICATION, REGRESSION
+
+
+class ValidationResult:
+
+    def __init__(self, corruption, baseline_score, corrupted_scores):
+        self.corruption = corruption
+        self.baseline_score = baseline_score
+        self.corrupted_scores = corrupted_scores
+
+
+class Evaluator(ABC):
+    def __init__(self, task: Task):
+        self._task = task
+
+    def _model_predict(self, model: BaseEstimator, data: pd.DataFrame) -> np.array:
+
+        if self._task._task_type == BINARY_CLASSIFICATION:
+            predictions = model.predict_proba(data)
+
+        elif self._task._task_type == MULTI_CLASS_CLASSIFICATION:
+            predictions = model.predict(data)
+
+        elif self._task._task_type == REGRESSION:
+            predictions = model.predict(data)
+
+        return predictions
+
+    @abstractmethod
+    def evaluate(self, model: BaseEstimator, num_repetitions: int, *corruptions: DataCorruption):
+        pass
diff --git a/src/jenga/evaluation/corruption_impact.py b/src/jenga/evaluation/corruption_impact.py
new file mode 100644
index 0000000..41a7c53
--- /dev/null
+++ b/src/jenga/evaluation/corruption_impact.py
@@ -0,0 +1,54 @@
+from sklearn.base import BaseEstimator
+
+from .basis import DataCorruption, Evaluator, ValidationResult
+
+
+# Evaluate the impact of one or more data corruption on the prediction quality of a model;
+# applies the corruptions repeatedly to copies of the test data
+# and computes the model's prediction quality for afterwards
+class CorruptionImpactEvaluator(Evaluator):
+
+    def evaluate(self, model: BaseEstimator, num_repetitions: int, *corruptions: DataCorruption):
+
+        if not self._task.is_image_data:
+            test_data_copy = self._task.test_data.copy(deep=True)
+        else:
+            test_data_copy = self._task.test_data.copy()
+
+        baseline_predictions = self._model_predict(model, test_data_copy)
+        baseline_score = self._task.score_on_test_data(baseline_predictions)
+
+        results = []
+
+        num_results = len(corruptions) * num_repetitions
+
+        current_run = 0
+        import time
+        t = time.process_time()
+
+        # Evaluate each specified corruption
+        for corruption in corruptions:
+            corrupted_scores = []
+            # Repeatedly
+            for _ in range(num_repetitions):
+
+                if not self._task.is_image_data:
+                    test_data_copy = self._task.test_data.copy(deep=True)
+                else:
+                    test_data_copy = self._task.test_data.copy()
+
+                corrupted_data = corruption.transform(test_data_copy)
+
+                # corrupted_predictions = model.predict_proba(corrupted_data)
+                corrupted_predictions = self._model_predict(model, corrupted_data)
+                corrupted_score = self._task.score_on_test_data(corrupted_predictions)
+
+                corrupted_scores.append(corrupted_score)
+
+                if current_run % 10 == 0:
+                    print(f"{current_run}/{num_results} ({time.process_time() - t})")
+                current_run += 1
+
+            results.append(ValidationResult(corruption, baseline_score, corrupted_scores))
+
+        return results
diff --git a/jenga/evaluation/schema_validation.py b/src/jenga/evaluation/schema_validation.py
similarity index 65%
rename from jenga/evaluation/schema_validation.py
rename to src/jenga/evaluation/schema_validation.py
index f2426c4..dedbb3d 100644
--- a/jenga/evaluation/schema_validation.py
+++ b/src/jenga/evaluation/schema_validation.py
@@ -1,33 +1,39 @@
 import tensorflow_data_validation as tfdv
+from sklearn.base import BaseEstimator
 
+from ..basis import DataCorruption
+from .basis import Evaluator, ValidationResult
 
-class SchemaValidationResult:
+
+class SchemaValidationResult(ValidationResult):
 
     def __init__(self, corruption, anomalies, baseline_score, corrupted_scores):
-        self.corruption = corruption
+
+        super().__init__(
+            corruption=corruption,
+            baseline_score=baseline_score,
+            corrupted_scores=corrupted_scores
+        )
         self.anomalies_detected = [len(exp_anomalies) > 0 for exp_anomalies in anomalies]
-        self.baseline_score = baseline_score
-        self.corrupted_scores = corrupted_scores
 
 
 # Takes a tfdv schema and corruptions to evaluate two things at once:
 # (1) Does tfdv detect an anomaly for the corruption?
 # (2) How much does the corruption decrease the prediction quality
-class SchemaValidationEvaluator:
-
-    def __init__(self, task):
-        self.__task = task
+class SchemaValidationEvaluator(Evaluator):
 
     # Auto-infer a schema from the training daya
     def schema_from_train_data(self):
-        train_data_stats = tfdv.generate_statistics_from_dataframe(self.__task.train_data)
+        train_data_stats = tfdv.generate_statistics_from_dataframe(self._task.train_data)
         schema = tfdv.infer_schema(statistics=train_data_stats)
         return schema
 
-    def evaluate_validation(self, model, schema, num_repetitions, *corruptions):
+    def evaluate(self, model: BaseEstimator, num_repetitions: int, *corruptions: DataCorruption):
+
+        schema = self.schema_from_train_data()
 
-        baseline_predictions = model.predict_proba(self.__task.test_data)
-        baseline_score = self.__task.score_on_test_data(baseline_predictions)
+        baseline_predictions = model.predict_proba(self._task.test_data)
+        baseline_score = self._task.score_on_test_data(baseline_predictions)
 
         results = []
 
@@ -36,7 +42,7 @@ def evaluate_validation(self, model, schema, num_repetitions, *corruptions):
             corrupted_scores = []
             anomalies = []
             for _ in range(0, num_repetitions):
-                test_data_copy = self.__task.test_data.copy(deep=True)
+                test_data_copy = self._task.test_data.copy(deep=True)
                 corrupted_data = corruption.transform(test_data_copy)
 
                 # Determine whether tfdv finds anomalies in the data
@@ -47,7 +53,7 @@ def evaluate_validation(self, model, schema, num_repetitions, *corruptions):
 
                 # Compute the prediction score on the test data
                 corrupted_predictions = model.predict_proba(corrupted_data)
-                corrupted_score = self.__task.score_on_test_data(corrupted_predictions)
+                corrupted_score = self._task.score_on_test_data(corrupted_predictions)
 
                 anomalies.append(schema_anomalies)
                 corrupted_scores.append(corrupted_score)
diff --git a/src/jenga/tasks/income.py b/src/jenga/tasks/income.py
new file mode 100644
index 0000000..a335cfa
--- /dev/null
+++ b/src/jenga/tasks/income.py
@@ -0,0 +1,51 @@
+import pandas as pd
+from sklearn.model_selection import train_test_split
+
+from ..basis import BinaryClassificationTask
+
+
+# Predict whether a person has high or low income based on demographic and financial attributes
+class IncomeEstimationTask(BinaryClassificationTask):
+
+    def __init__(self, seed, ignore_incomplete_records_for_training=False):
+        """
+        Class that represents a binary classification task based on the [Adult Data Set](https://archive.ics.uci.edu/ml/datasets/adult).
+
+        Adult Data Set Abstract:
+            Predict whether income exceeds $50K/yr based on census data. Also known as "Census Income" dataset.
+
+        Args:
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+            ignore_incomplete_records_for_training (bool, optional): Indicates whether or not to drop rows with missing values for training. \
+                Defaults to False.
+        """
+
+        columns = ['workclass', 'occupation', 'marital_status', 'education', 'hours_per_week', 'age']
+        categorical_columns = ['workclass', 'occupation', 'marital_status', 'education']
+        numerical_columns = ['hours_per_week', 'age']
+
+        all_data = pd.read_csv('../data/income/adult.csv', na_values='?')
+
+        train_split, test_split = train_test_split(all_data, test_size=0.2)
+
+        if ignore_incomplete_records_for_training:
+            train_split = train_split.dropna()
+
+        train_data = train_split[columns]
+        train_labels = (train_split['class'] == '>50K').replace({True: 1, False: 0})
+        train_labels = train_labels.astype("category")
+
+        test_data = test_split[columns]
+        test_labels = (test_split['class'] == '>50K').replace({True: 1, False: 0})
+        test_labels = test_labels.astype("category")
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            is_image_data=False,
+            seed=seed
+        )
diff --git a/src/jenga/tasks/openml.py b/src/jenga/tasks/openml.py
new file mode 100644
index 0000000..18baf14
--- /dev/null
+++ b/src/jenga/tasks/openml.py
@@ -0,0 +1,72 @@
+from typing import Optional
+
+import pandas as pd
+from sklearn.datasets import fetch_openml
+from sklearn.model_selection import train_test_split
+
+from ..basis import (
+    BinaryClassificationTask,
+    MultiClassClassificationTask,
+    RegressionTask,
+    Task
+)
+
+
+class OpenMLTask(Task):
+
+    def __init__(self, openml_id: int, train_size: float = 0.8, seed: Optional[int] = None):
+        """
+        Base class for task that get data from [OpenML](https://www.openml.org).
+
+        Args:
+            openml_id (int): ID of the to-be-fetched data from [OpenML](https://www.openml.org)
+            train_size (float, optional): Defines the data split. Defaults to 0.8.
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        X, y = fetch_openml(data_id=openml_id, as_frame=True, return_X_y=True)
+        train_data, test_data, train_labels, test_labels = train_test_split(X, y, train_size=train_size)
+
+        categorical_columns = [
+            column for column in X.columns
+            if pd.api.types.is_categorical_dtype(X[column])
+        ]
+        numerical_columns = [
+            column for column in X.columns
+            if pd.api.types.is_numeric_dtype(X[column]) and column not in categorical_columns
+        ]
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            is_image_data=False,
+            seed=seed
+        )
+
+
+class OpenMLRegressionTask(OpenMLTask, RegressionTask):
+    """
+    Class that represents a regression task and gets data from [OpenML](https://www.openml.org).
+    """
+
+    pass
+
+
+class OpenMLMultiClassClassificationTask(OpenMLTask, MultiClassClassificationTask):
+    """
+    Class that represents a multi-class classification task and gets data from [OpenML](https://www.openml.org).
+    """
+
+    pass
+
+
+class OpenMLBinaryClassificationTask(OpenMLTask, BinaryClassificationTask):
+    """
+    Class that represents a binary classification task and gets data from [OpenML](https://www.openml.org).
+    """
+
+    pass
diff --git a/src/jenga/tasks/reviews.py b/src/jenga/tasks/reviews.py
new file mode 100644
index 0000000..83c9272
--- /dev/null
+++ b/src/jenga/tasks/reviews.py
@@ -0,0 +1,150 @@
+from typing import Optional
+
+import numpy as np
+import pandas as pd
+from sklearn.base import BaseEstimator
+from sklearn.compose import ColumnTransformer
+from sklearn.feature_extraction.text import HashingVectorizer
+from sklearn.linear_model import SGDClassifier
+from sklearn.model_selection import GridSearchCV
+from sklearn.pipeline import Pipeline
+from sklearn.preprocessing import OneHotEncoder, StandardScaler
+
+from ..basis import BinaryClassificationTask
+
+
+# Predict whether a video game review is considered helpful or not
+class VideogameReviewsTask(BinaryClassificationTask):
+
+    def __init__(self, seed):
+        """
+        Class that represents a binary classification task based on video game reviews.
+        Predict whether a video game review is considered helpful or not.
+
+        Args:
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        columns = ['marketplace', 'customer_id', 'review_id', 'product_id', 'product_parent',
+                   'product_title', 'product_category', 'star_rating', 'helpful_votes',
+                   'total_votes', 'vine', 'verified_purchase', 'review_headline', 'review_body',
+                   'review_date']
+        dtypes = {
+            'marketplace': str,
+            'customer_id': str,
+            'review_id': str,
+            'product_id': str,
+            'product_parent': str,
+            'product_title': str,
+            'product_category': str,
+            'star_rating': np.int32,
+            'helpful_votes': np.int32,
+            'total_votes': np.int32,
+            'vine': str,
+            'verified_purchase': str,
+            'review_headline': str,
+            'review_body': str,
+            'review_date': str
+        }
+        categorical_columns = ['marketplace', 'customer_id', 'review_id', 'product_id', 'product_parent', 'vine', 'verified_purchase']
+        numerical_columns = ['star_rating']
+        text_columns = ['product_title', 'review_headline', 'review_body', 'title_and_review_text']
+
+        raw_data = pd.read_csv('../data/reviews/videogames.tsv', sep='\t', names=columns, dtype=dtypes)
+        # We drop this column, the prediction task is to easy otherwise
+        raw_data = raw_data.drop(['total_votes'], axis=1)
+
+        raw_data[['product_title', 'review_headline', 'review_body']] = raw_data[['product_title', 'review_headline', 'review_body']].fillna(value='')
+        raw_data['title_and_review_text'] = raw_data.product_title + ' ' + raw_data.review_headline + ' ' + raw_data.review_body
+
+        train_data = self._extract_data(raw_data, '2015-05-04', '2015-06-14')
+        train_labels = self._extract_labels(raw_data, '2015-05-04', '2015-06-14')
+        train_labels = train_labels.astype("category")
+
+        test_data = self._extract_data(raw_data, '2015-06-15', '2015-06-28')
+        test_labels = self._extract_labels(raw_data, '2015-06-15', '2015-06-28')
+        test_labels = test_labels.astype("category")
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            categorical_columns=categorical_columns,
+            numerical_columns=numerical_columns,
+            text_columns=text_columns,
+            is_image_data=False,
+            seed=seed
+        )
+
+    @staticmethod
+    def _extract_data(raw_data, start_date, end_date):
+        data_slice = raw_data[(raw_data.review_date >= start_date) & (raw_data.review_date <= end_date)].copy(deep=True)
+        data_slice = data_slice.drop(['helpful_votes'], axis=1)
+        return data_slice
+
+    @staticmethod
+    def _extract_labels(raw_data, start_date, end_date):
+        data_slice = raw_data[(raw_data.review_date >= start_date) & (raw_data.review_date <= end_date)].copy(deep=True)
+        return (data_slice['helpful_votes'] > 0).replace({True: 1, False: 0})
+
+    def fit_baseline_model(self, train_data: Optional[pd.DataFrame] = None, train_labels: Optional[pd.Series] = None) -> BaseEstimator:
+        """
+        Because data contains text columns, this overrides the default behavior.
+
+        Fit a baseline model. If no data is given (default), it uses the task's train data and creates the attribute `_baseline_model`. \
+            If data is given, it trains this data.
+
+        Args:
+            train_data (Optional[pd.DataFrame], optional): Data to train. Defaults to None.
+            train_labels (Optional[pd.Series], optional): Labels to train. Defaults to None.
+
+        Raises:
+            ValueError: If `train_data` is given but `train_labels` not or vice versa
+
+        Returns:
+            BaseEstimator: Trained model
+        """
+
+        if (train_data is None and train_labels is not None) or (train_data is not None and train_labels is None):
+            raise ValueError("either set both parameters (train_data, train_labels) or non")
+
+        use_original_data = train_data is None
+
+        if use_original_data:
+            train_data = self.train_data.copy()
+            train_labels = self.train_labels.copy()
+
+        numerical_attributes = ['star_rating']
+        categorical_attributes = ['vine', 'verified_purchase']
+
+        feature_transformation = ColumnTransformer(
+            transformers=[
+                ('numerical_features', StandardScaler(), numerical_attributes),
+                ('categorical_features', OneHotEncoder(handle_unknown='ignore'), categorical_attributes),
+                ('textual_features', HashingVectorizer(ngram_range=(1, 3), n_features=10000), 'title_and_review_text')
+            ],
+            sparse_threshold=1.0
+        )
+
+        param_grid = {
+            'learner__loss': ['log'],
+            'learner__penalty': ['l2'],
+            'learner__alpha': [0.00001, 0.0001, 0.001, 0.01]
+        }
+
+        pipeline = Pipeline(
+            [
+                ('features', feature_transformation),
+                ('learner', SGDClassifier(max_iter=1000, n_jobs=-1))
+            ]
+        )
+
+        search = GridSearchCV(pipeline, param_grid, scoring='roc_auc', cv=5, n_jobs=-1)
+        model = search.fit(train_data, train_labels).best_estimator_
+
+        # only set baseline model attribute if it is trained on the original task data
+        if use_original_data:
+            self._baseline_model = model
+
+        return model
diff --git a/src/jenga/tasks/shoes.py b/src/jenga/tasks/shoes.py
new file mode 100644
index 0000000..e694bbb
--- /dev/null
+++ b/src/jenga/tasks/shoes.py
@@ -0,0 +1,112 @@
+from typing import Optional
+
+import numpy as np
+import tensorflow as tf
+from tensorflow import keras
+
+from ..basis import BinaryClassificationTask
+
+
+class PreprocessingDecorator:
+
+    def __init__(self, model):
+        self._baseline_model = model
+
+    def predict_proba(self, images):
+        normalized_images = images.astype('float32') / 255
+        reshaped_images = normalized_images.reshape(images.shape[0], 28, 28, 1)
+        return self._baseline_model.predict(reshaped_images)
+
+
+# Distinguish images of "ankle boots" from images of "sneakers"
+class ShoeCategorizationTask(BinaryClassificationTask):
+
+    def __init__(self, seed):
+        """
+        Class that represents a binary classification task based on a subset of [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist).
+        Predict whether an image is a sneaker (`0`) or an ankle boot (`1`).
+
+        Args:
+            seed (Optional[int], optional): Seed for determinism. Defaults to None.
+        """
+
+        sneaker_id = 7
+        ankle_boot_id = 9
+
+        fashion_mnist = keras.datasets.fashion_mnist
+        (train_images, all_train_labels), (test_images, all_test_labels) = fashion_mnist.load_data()
+
+        # AnkleBoot (class=9) vs Sneaker (class=7)
+        train_data = train_images[(all_train_labels == ankle_boot_id) | (all_train_labels == sneaker_id)]
+
+        train_labels = all_train_labels[(all_train_labels == ankle_boot_id) | (all_train_labels == sneaker_id)]
+        train_labels = np.where(train_labels == ankle_boot_id, 1, train_labels)
+        train_labels = np.where(train_labels == sneaker_id, 0, train_labels)
+
+        test_data = test_images[(all_test_labels == ankle_boot_id) | (all_test_labels == sneaker_id)]
+
+        test_labels = all_test_labels[(all_test_labels == ankle_boot_id) | (all_test_labels == sneaker_id)]
+        test_labels = np.where(test_labels == ankle_boot_id, 1, test_labels)
+        test_labels = np.where(test_labels == sneaker_id, 0, test_labels)
+
+        super().__init__(
+            train_data=train_data,
+            train_labels=train_labels,
+            test_data=test_data,
+            test_labels=test_labels,
+            is_image_data=True,
+            seed=seed
+        )
+
+    def fit_baseline_model(self, images: Optional[np.array] = None, labels: Optional[np.array] = None) -> PreprocessingDecorator:
+        """
+        Because data are images, this overrides the default behavior.
+
+        Fit a baseline model. If no data is given (default), it uses the task's train data and creates the attribute `_baseline_model`. \
+            If data is given, it trains this data.
+
+        Args:
+            images (Optional[np.array], optional): Data to train. Defaults to None.
+            labels (Optional[np.array], optional): Labels to train. Defaults to None.
+
+        Raises:
+            ValueError: If `images` is given but `labels` not or vice versa
+
+        Returns:
+            PreprocessingDecorator: Trained model
+        """
+
+        if (images is None and labels is not None) or (images is not None and labels is None):
+            raise ValueError("either set both parameters (images, labels) or non")
+
+        use_original_data = images is None
+
+        if images is None:
+            images = self.train_data.copy()
+            labels = self.train_labels.copy()
+
+        model = tf.keras.Sequential()
+        model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=2, padding='same', activation='relu', input_shape=(28, 28, 1)))
+        model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
+        model.add(tf.keras.layers.Dropout(0.3))
+        model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=2, padding='same', activation='relu'))
+        model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
+        model.add(tf.keras.layers.Dropout(0.3))
+        model.add(tf.keras.layers.Flatten())
+        model.add(tf.keras.layers.Dense(256, activation='relu'))
+        model.add(tf.keras.layers.Dropout(0.5))
+        model.add(tf.keras.layers.Dense(2, activation='softmax'))
+
+        model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
+
+        normalized_images = images.astype('float32') / 255
+        reshaped_images = normalized_images.reshape(images.shape[0], 28, 28, 1)
+
+        model.fit(reshaped_images, keras.utils.to_categorical(labels))
+        model = PreprocessingDecorator(model)
+
+        # only set baseline model attribute if it is trained on the original task data
+        if use_original_data:
+            self._baseline_model = model
+
+        return model
diff --git a/src/jenga/utils.py b/src/jenga/utils.py
new file mode 100644
index 0000000..c309e76
--- /dev/null
+++ b/src/jenga/utils.py
@@ -0,0 +1,11 @@
+
+
+REGRESSION = 0
+BINARY_CLASSIFICATION = 1
+MULTI_CLASS_CLASSIFICATION = 2
+
+AVAILABLE_TASK_TYPES = [
+    REGRESSION,
+    BINARY_CLASSIFICATION,
+    MULTI_CLASS_CLASSIFICATION
+]


Test patch:
diff --git a/example-schema-stresstest.ipynb b/notebooks/example-schema-stresstest.ipynb
similarity index 58%
rename from example-schema-stresstest.ipynb
rename to notebooks/example-schema-stresstest.ipynb
index 6cec808..62b2a78 100644
--- a/example-schema-stresstest.ipynb
+++ b/notebooks/example-schema-stresstest.ipynb
@@ -341,7 +341,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "model = task.fit_baseline_model(task.train_data, task.train_labels)"
+    "model = task.fit_baseline_model()"
    ]
   },
   {
@@ -360,268 +360,262 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.33, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.73}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.68, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.17}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.71, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.17, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.4, 'sampling': 'MAR', 'na_value': ''}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.54, 'sampling': 'CAR'}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.52, 'sampling': 'CAR'}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.09, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.02, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.68}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.7, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.38, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.61, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.28}\n",
-      "SwappedValues: {'column': 'title_and_review_text', 'fraction': 0.8, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.57, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.11, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.24}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.06}\n",
-      "SwappedValues: {'column': 'review_headline', 'fraction': 0.51, 'sampling': 'CAR', 'swap_with': 'product_title'}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.34, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.73}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.22, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.83}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.27}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.27, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.4, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.3, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.84, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.21, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.44}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.27, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.96, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.66}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.41}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.45, 'sampling': 'MAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'review_id', 'fraction': 0.78, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.38}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.16, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.05}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.84, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.67}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.5, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.6, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.57, 'sampling': 'CAR'}\n",
-      "SwappedValues: {'column': 'product_title', 'fraction': 0.02, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.77}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.13, 'sampling': 'CAR'}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.06}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.73}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.97, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.11}\n",
-      "SwappedValues: {'column': 'product_parent', 'fraction': 0.85, 'sampling': 'CAR', 'swap_with': 'review_id'}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.4, 'sampling': 'MAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'product_parent', 'fraction': 0.92, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.61}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.38, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.39, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.26, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.82}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.05}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.95, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.81, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.97, 'sampling': 'CAR'}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.74}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.65, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.46, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.64}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.03, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.86, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.5}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.48, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_parent', 'fraction': 0.67, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.03, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.08, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.94}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.56}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.88, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.74}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.87, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.67}\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.79, 'sampling': 'CAR', 'swap_with': 'verified_purchase'}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.64, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_parent', 'fraction': 0.39, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.21, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.07, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.54, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.56}\n",
+      "SwappedValues: {'column': 'review_headline', 'fraction': 0.88, 'sampling': 'CAR', 'swap_with': 'product_title'}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.07}\n",
+      "SwappedValues: {'column': 'product_parent', 'fraction': 0.11, 'sampling': 'CAR', 'swap_with': 'product_parent'}\n",
+      "MissingValues: {'column': 'product_parent', 'fraction': 0.65, 'sampling': 'MAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'product_title', 'fraction': 0.7, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.72}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.21, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.41, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.5, 'sampling': 'MAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'vine', 'fraction': 0.92, 'sampling': 'CAR', 'swap_with': 'vine'}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.97, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.56, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.75}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.81}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.03, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.58, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.5, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.54}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.01, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.02}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.4, 'sampling': 'MCAR', 'na_value': ''}\n",
       "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.29}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.54}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.14}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.63}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.33}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.59}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.72, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.23, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.16}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.38}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.64}\n",
-      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.91}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.76, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.34}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.13, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'review_id', 'fraction': 0.87, 'sampling': 'CAR', 'swap_with': 'verified_purchase'}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.58}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.71}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.54}\n",
-      "MissingValues: {'column': 'star_rating', 'fraction': 0.19, 'sampling': 'MCAR', 'na_value': nan}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.16}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.98, 'sampling': 'MAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'product_id', 'fraction': 0.58, 'sampling': 'CAR', 'swap_with': 'vine'}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.09}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.94}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.3, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.74, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.03, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.06, 'sampling': 'MAR', 'na_value': ''}\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "MissingValues: {'column': 'review_id', 'fraction': 0.13, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.86, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.46}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.84}\n",
-      "SwappedValues: {'column': 'title_and_review_text', 'fraction': 0.14, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.03, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.69, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'customer_id', 'fraction': 0.19, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.44, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.74, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.85, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.99, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.08}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.61, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.99, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.29, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.55, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.21, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.15, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.95, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.3, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.52, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.27, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.94, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.48, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.0}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.41, 'sampling': 'MAR', 'na_value': ''}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.22, 'sampling': 'CAR'}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.96}\n",
-      "SwappedValues: {'column': 'product_title', 'fraction': 0.3, 'sampling': 'CAR', 'swap_with': 'title_and_review_text'}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.72, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'product_parent', 'fraction': 0.99, 'sampling': 'CAR', 'swap_with': 'review_id'}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.98, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.24, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.76, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.63}\n",
-      "MissingValues: {'column': 'star_rating', 'fraction': 0.28, 'sampling': 'MNAR', 'na_value': nan}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.37, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.57, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.29, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.68}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.77, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.13}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.03, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.35, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'star_rating', 'fraction': 0.33, 'sampling': 'MNAR', 'na_value': nan}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.3, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'star_rating', 'fraction': 0.79, 'sampling': 'MCAR', 'na_value': nan}\n",
-      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.46}\n",
-      "MissingValues: {'column': 'product_id', 'fraction': 0.53, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.25, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.12, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.25}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.27}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.56, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.08, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.58, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.85, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.12, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.76}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.34}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.67}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.12, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.49, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.98}\n",
-      "SwappedValues: {'column': 'marketplace', 'fraction': 0.59, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.71}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.52, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.72}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.63}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.99}\n",
-      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.88}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.19}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.6}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.67, 'sampling': 'CAR'}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.5, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.85, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.45, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.59, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.42, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.25}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.8}\n",
-      "SwappedValues: {'column': 'review_body', 'fraction': 0.67, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.66, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.62}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.84}\n",
-      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.21, 'sampling': 'CAR', 'swap_with': 'product_parent'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.83, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.15}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.57, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.37}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.07}\n",
-      "MissingValues: {'column': 'review_body', 'fraction': 0.53, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.78, 'sampling': 'MAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.39}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.31, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.43, 'sampling': 'CAR'}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.78}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.85, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.95, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.38, 'sampling': 'MAR', 'na_value': ''}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.89, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.29, 'sampling': 'MCAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.16, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'review_id', 'fraction': 0.21, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.72}\n",
+      "SwappedValues: {'column': 'review_body', 'fraction': 0.67, 'sampling': 'CAR', 'swap_with': 'product_title'}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.74}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.97, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.99}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.54}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.16, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.53}\n",
       "BrokenCharacters: {'column': 'product_title', 'fraction': 0.74}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.24, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.32, 'sampling': 'MCAR', 'na_value': ''}\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.89, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.51, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'star_rating', 'fraction': 0.02, 'sampling': 'MCAR', 'na_value': nan}\n",
-      "SwappedValues: {'column': 'vine', 'fraction': 0.57, 'sampling': 'CAR', 'swap_with': 'marketplace'}\n",
-      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.36}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.82, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.29, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.36}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.49, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.01, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.33, 'sampling': 'MNAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.49, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.5}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.08}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.99}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.73}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.68, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.2}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.27, 'sampling': 'MAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'product_id', 'fraction': 0.97, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.94}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.68, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.04, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.57, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.97, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.88}\n",
+      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.24}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.26}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.48, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.31}\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.88, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.5, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.1, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.09, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.54, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.91, 'sampling': 'MNAR', 'na_value': ''}\n",
       "MissingValues: {'column': 'review_id', 'fraction': 0.04, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.89}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.61}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.73}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.34}\n",
-      "MissingValues: {'column': 'customer_id', 'fraction': 0.42, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.42, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.28, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.55, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.11}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.0}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.69}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.77, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'review_id', 'fraction': 0.32, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.3}\n",
+      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.88}\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.23, 'sampling': 'CAR', 'swap_with': 'verified_purchase'}\n",
+      "SwappedValues: {'column': 'title_and_review_text', 'fraction': 0.23, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
+      "SwappedValues: {'column': 'marketplace', 'fraction': 0.16, 'sampling': 'CAR', 'swap_with': 'review_id'}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.7, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.39}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.34}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.94, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.94, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.67}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.76, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.3, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.29}\n",
+      "MissingValues: {'column': 'product_parent', 'fraction': 0.47, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.18, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.29}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.44, 'sampling': 'CAR'}\n",
+      "SwappedValues: {'column': 'review_body', 'fraction': 0.95, 'sampling': 'CAR', 'swap_with': 'product_title'}\n",
+      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.82}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.38, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.56, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.11}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.68, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'vine', 'fraction': 0.84, 'sampling': 'CAR', 'swap_with': 'review_id'}\n",
+      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.05}\n",
+      "SwappedValues: {'column': 'marketplace', 'fraction': 0.24, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.01}\n",
+      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.91}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.25, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.36, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.22, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.4}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.69, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.54, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.28, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.21}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.01, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.09}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.55}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.33, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.14, 'sampling': 'MAR', 'na_value': ''}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.66, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.38, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.89}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.3, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.64, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.34}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.9}\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.03, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.73, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.39, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.69, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.21, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.82, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'marketplace', 'fraction': 0.13, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.55, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.47}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.42, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.54, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.49}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.86, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.85, 'sampling': 'MAR', 'na_value': ''}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.89, 'sampling': 'CAR'}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.34}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.16}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.38}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.36}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.51, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.94}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.76, 'sampling': 'MNAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.02, 'sampling': 'CAR', 'swap_with': 'product_parent'}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.0, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.72, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.48}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.11, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.01, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.7}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.13, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.5, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.9, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.22, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.88}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.99, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'verified_purchase', 'fraction': 0.13, 'sampling': 'CAR', 'swap_with': 'verified_purchase'}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.19, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.9, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'marketplace', 'fraction': 0.9, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.07}\n",
       "BrokenCharacters: {'column': 'review_body', 'fraction': 0.38}\n",
-      "SwappedValues: {'column': 'marketplace', 'fraction': 0.53, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.79, 'sampling': 'MAR', 'na_value': ''}\n",
-      "SwappedValues: {'column': 'product_title', 'fraction': 0.38, 'sampling': 'CAR', 'swap_with': 'title_and_review_text'}\n",
-      "MissingValues: {'column': 'product_title', 'fraction': 0.27, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.89}\n",
-      "MissingValues: {'column': 'product_parent', 'fraction': 0.77, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.31, 'sampling': 'MCAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.71, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.49, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_id', 'fraction': 0.95, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.86}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.96, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.56}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.26}\n",
+      "SwappedValues: {'column': 'title_and_review_text', 'fraction': 0.9, 'sampling': 'CAR', 'swap_with': 'title_and_review_text'}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.29, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.43, 'sampling': 'CAR'}\n",
+      "SwappedValues: {'column': 'product_title', 'fraction': 0.76, 'sampling': 'CAR', 'swap_with': 'review_body'}\n",
       "BrokenCharacters: {'column': 'product_id', 'fraction': 0.61}\n",
-      "MissingValues: {'column': 'review_headline', 'fraction': 0.4, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.57, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.82, 'sampling': 'CAR'}\n",
-      "Scaling: {'column': 'star_rating', 'fraction': 0.9, 'sampling': 'CAR'}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.28, 'sampling': 'MAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'vine', 'fraction': 0.48, 'sampling': 'MCAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.68}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.12, 'sampling': 'MAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.46}\n",
-      "MissingValues: {'column': 'marketplace', 'fraction': 0.71, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.84, 'sampling': 'MNAR', 'na_value': ''}\n",
-      "BrokenCharacters: {'column': 'vine', 'fraction': 0.81}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.76}\n",
-      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.52}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.03}\n",
-      "SwappedValues: {'column': 'customer_id', 'fraction': 0.69, 'sampling': 'CAR', 'swap_with': 'marketplace'}\n",
-      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.46}\n",
-      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.56}\n",
-      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.52}\n",
-      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.21}\n",
-      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.92}\n"
+      "SwappedValues: {'column': 'review_id', 'fraction': 0.12, 'sampling': 'CAR', 'swap_with': 'customer_id'}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.83}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.61}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.39, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.43}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.74, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_id', 'fraction': 0.28}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.3, 'sampling': 'MAR', 'na_value': ''}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.8, 'sampling': 'CAR'}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.02}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.37}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.95, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.71, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.84}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.14, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.36}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.14, 'sampling': 'MAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'review_body', 'fraction': 0.4, 'sampling': 'CAR', 'swap_with': 'title_and_review_text'}\n",
+      "BrokenCharacters: {'column': 'product_parent', 'fraction': 0.98}\n",
+      "BrokenCharacters: {'column': 'review_headline', 'fraction': 0.82}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.79}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.99, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.98}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.27}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.75, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'marketplace', 'fraction': 0.77}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.48, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.71}\n",
+      "MissingValues: {'column': 'vine', 'fraction': 0.21, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.93, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.79, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_parent', 'fraction': 0.5, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.93, 'sampling': 'MAR', 'na_value': ''}\n",
+      "SwappedValues: {'column': 'customer_id', 'fraction': 0.45, 'sampling': 'CAR', 'swap_with': 'marketplace'}\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.67}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.54, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.97}\n",
+      "BrokenCharacters: {'column': 'verified_purchase', 'fraction': 0.6}\n",
+      "MissingValues: {'column': 'review_headline', 'fraction': 0.48, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'product_title', 'fraction': 0.94, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'marketplace', 'fraction': 0.77, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.76}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.49, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'vine', 'fraction': 0.18}\n",
+      "BrokenCharacters: {'column': 'product_id', 'fraction': 0.4}\n",
+      "GaussianNoise: {'column': 'star_rating', 'fraction': 0.89, 'sampling': 'CAR'}\n",
+      "SwappedValues: {'column': 'vine', 'fraction': 0.18, 'sampling': 'CAR', 'swap_with': 'product_id'}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.88, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'verified_purchase', 'fraction': 0.42, 'sampling': 'MAR', 'na_value': ''}\n",
+      "MissingValues: {'column': 'star_rating', 'fraction': 0.44, 'sampling': 'MNAR', 'na_value': nan}\n",
+      "Raised error: Input contains NaN, infinity or a value too large for dtype('float64').\n",
+      "BrokenCharacters: {'column': 'review_body', 'fraction': 0.36}\n",
+      "BrokenCharacters: {'column': 'customer_id', 'fraction': 0.27}\n",
+      "MissingValues: {'column': 'customer_id', 'fraction': 0.31, 'sampling': 'MCAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'title_and_review_text', 'fraction': 0.68}\n",
+      "MissingValues: {'column': 'review_body', 'fraction': 0.25, 'sampling': 'MNAR', 'na_value': ''}\n",
+      "Scaling: {'column': 'star_rating', 'fraction': 0.58, 'sampling': 'CAR'}\n",
+      "MissingValues: {'column': 'title_and_review_text', 'fraction': 0.15, 'sampling': 'MAR', 'na_value': ''}\n",
+      "BrokenCharacters: {'column': 'product_title', 'fraction': 0.98}\n",
+      "MissingValues: {'column': 'product_id', 'fraction': 0.9, 'sampling': 'MAR', 'na_value': ''}\n"
      ]
     }
    ],
@@ -672,47 +666,47 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <td>0</td>\n",
-       "      <td>MissingValues: {'column': 'product_parent', 'f...</td>\n",
+       "      <th>0</th>\n",
+       "      <td>BrokenCharacters: {'column': 'product_id', 'fr...</td>\n",
+       "      <td>TN</td>\n",
+       "      <td>{}</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>MissingValues: {'column': 'customer_id', 'frac...</td>\n",
        "      <td>FP</td>\n",
-       "      <td>{'product_parent': description: \"String values...</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>{'customer_id': description: \"String values th...</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>1</td>\n",
-       "      <td>BrokenCharacters: {'column': 'review_headline'...</td>\n",
-       "      <td>TN</td>\n",
-       "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <th>2</th>\n",
+       "      <td>MissingValues: {'column': 'product_parent', 'f...</td>\n",
+       "      <td>FP</td>\n",
+       "      <td>{'product_parent': description: \"String values...</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>2</td>\n",
-       "      <td>MissingValues: {'column': 'review_id', 'fracti...</td>\n",
+       "      <th>3</th>\n",
+       "      <td>MissingValues: {'column': 'review_body', 'frac...</td>\n",
        "      <td>TN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>3</td>\n",
-       "      <td>BrokenCharacters: {'column': 'vine', 'fraction...</td>\n",
+       "      <th>4</th>\n",
+       "      <td>MissingValues: {'column': 'product_title', 'fr...</td>\n",
        "      <td>TN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>4</td>\n",
-       "      <td>MissingValues: {'column': 'product_parent', 'f...</td>\n",
-       "      <td>FP</td>\n",
-       "      <td>{'product_parent': description: \"String values...</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <td>...</td>\n",
+       "      <th>...</th>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
        "      <td>...</td>\n",
@@ -720,44 +714,44 @@
        "      <td>...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>245</td>\n",
-       "      <td>BrokenCharacters: {'column': 'review_body', 'f...</td>\n",
+       "      <th>245</th>\n",
+       "      <td>MissingValues: {'column': 'review_body', 'frac...</td>\n",
        "      <td>TN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>246</td>\n",
-       "      <td>BrokenCharacters: {'column': 'review_headline'...</td>\n",
-       "      <td>TN</td>\n",
+       "      <th>246</th>\n",
+       "      <td>Scaling: {'column': 'star_rating', 'fraction':...</td>\n",
+       "      <td>FN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.597127</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>247</td>\n",
-       "      <td>BrokenCharacters: {'column': 'marketplace', 'f...</td>\n",
-       "      <td>FP</td>\n",
-       "      <td>{'marketplace': description: \"Examples contain...</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <th>247</th>\n",
+       "      <td>MissingValues: {'column': 'title_and_review_te...</td>\n",
+       "      <td>TN</td>\n",
+       "      <td>{}</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.771675</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>248</td>\n",
-       "      <td>BrokenCharacters: {'column': 'product_parent',...</td>\n",
+       "      <th>248</th>\n",
+       "      <td>BrokenCharacters: {'column': 'product_title', ...</td>\n",
        "      <td>TN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.790875</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <td>249</td>\n",
-       "      <td>BrokenCharacters: {'column': 'title_and_review...</td>\n",
-       "      <td>FN</td>\n",
+       "      <th>249</th>\n",
+       "      <td>MissingValues: {'column': 'product_id', 'fract...</td>\n",
+       "      <td>TN</td>\n",
        "      <td>{}</td>\n",
-       "      <td>0.790875</td>\n",
-       "      <td>0.716527</td>\n",
+       "      <td>0.793205</td>\n",
+       "      <td>0.793205</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
@@ -766,43 +760,43 @@
       ],
       "text/plain": [
        "                                            corruption status  \\\n",
-       "0    MissingValues: {'column': 'product_parent', 'f...     FP   \n",
-       "1    BrokenCharacters: {'column': 'review_headline'...     TN   \n",
-       "2    MissingValues: {'column': 'review_id', 'fracti...     TN   \n",
-       "3    BrokenCharacters: {'column': 'vine', 'fraction...     TN   \n",
-       "4    MissingValues: {'column': 'product_parent', 'f...     FP   \n",
+       "0    BrokenCharacters: {'column': 'product_id', 'fr...     TN   \n",
+       "1    MissingValues: {'column': 'customer_id', 'frac...     FP   \n",
+       "2    MissingValues: {'column': 'product_parent', 'f...     FP   \n",
+       "3    MissingValues: {'column': 'review_body', 'frac...     TN   \n",
+       "4    MissingValues: {'column': 'product_title', 'fr...     TN   \n",
        "..                                                 ...    ...   \n",
-       "245  BrokenCharacters: {'column': 'review_body', 'f...     TN   \n",
-       "246  BrokenCharacters: {'column': 'review_headline'...     TN   \n",
-       "247  BrokenCharacters: {'column': 'marketplace', 'f...     FP   \n",
-       "248  BrokenCharacters: {'column': 'product_parent',...     TN   \n",
-       "249  BrokenCharacters: {'column': 'title_and_review...     FN   \n",
+       "245  MissingValues: {'column': 'review_body', 'frac...     TN   \n",
+       "246  Scaling: {'column': 'star_rating', 'fraction':...     FN   \n",
+       "247  MissingValues: {'column': 'title_and_review_te...     TN   \n",
+       "248  BrokenCharacters: {'column': 'product_title', ...     TN   \n",
+       "249  MissingValues: {'column': 'product_id', 'fract...     TN   \n",
        "\n",
        "                                             anomalies  baseline_score  \\\n",
-       "0    {'product_parent': description: \"String values...        0.790875   \n",
-       "1                                                   {}        0.790875   \n",
-       "2                                                   {}        0.790875   \n",
-       "3                                                   {}        0.790875   \n",
-       "4    {'product_parent': description: \"String values...        0.790875   \n",
+       "0                                                   {}        0.793205   \n",
+       "1    {'customer_id': description: \"String values th...        0.793205   \n",
+       "2    {'product_parent': description: \"String values...        0.793205   \n",
+       "3                                                   {}        0.793205   \n",
+       "4                                                   {}        0.793205   \n",
        "..                                                 ...             ...   \n",
-       "245                                                 {}        0.790875   \n",
-       "246                                                 {}        0.790875   \n",
-       "247  {'marketplace': description: \"Examples contain...        0.790875   \n",
-       "248                                                 {}        0.790875   \n",
-       "249                                                 {}        0.790875   \n",
+       "245                                                 {}        0.793205   \n",
+       "246                                                 {}        0.793205   \n",
+       "247                                                 {}        0.793205   \n",
+       "248                                                 {}        0.793205   \n",
+       "249                                                 {}        0.793205   \n",
        "\n",
        "     corrupted_score  \n",
-       "0           0.790875  \n",
-       "1           0.790875  \n",
-       "2           0.790875  \n",
-       "3           0.790875  \n",
-       "4           0.790875  \n",
+       "0           0.793205  \n",
+       "1           0.793205  \n",
+       "2           0.793205  \n",
+       "3           0.793205  \n",
+       "4           0.793205  \n",
        "..               ...  \n",
-       "245         0.790875  \n",
-       "246         0.790875  \n",
-       "247         0.790875  \n",
-       "248         0.790875  \n",
-       "249         0.716527  \n",
+       "245         0.793205  \n",
+       "246         0.597127  \n",
+       "247         0.771675  \n",
+       "248         0.793205  \n",
+       "249         0.793205  \n",
        "\n",
        "[250 rows x 5 columns]"
       ]
@@ -833,7 +827,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.8"
+   "version": "3.7.10"
   }
  },
  "nbformat": 4,
diff --git a/jenga/evaluation/schema_stresstest.py b/src/jenga/evaluation/schema_stresstest.py
similarity index 88%
rename from jenga/evaluation/schema_stresstest.py
rename to src/jenga/evaluation/schema_stresstest.py
index e6f1bdf..2c2300e 100644
--- a/jenga/evaluation/schema_stresstest.py
+++ b/src/jenga/evaluation/schema_stresstest.py
@@ -1,12 +1,11 @@
 import numpy as np
 import pandas as pd
-
-from jenga.corruptions.generic import MissingValues, SwappedValues
-from jenga.corruptions.numerical import GaussianNoise, Scaling
-from jenga.corruptions.text import BrokenCharacters
-
 import tensorflow_data_validation as tfdv
 
+from ..corruptions.generic import MissingValues, SwappedValues
+from ..corruptions.numerical import GaussianNoise, Scaling
+from ..corruptions.text import BrokenCharacters
+
 
 # Takes a tfdv schema and corruptions to evaluate two things at once:
 # (1) Does tfdv detect an anomaly for the corruption?
@@ -36,9 +35,11 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
             p_categorical_column_affected = float(len(task.categorical_columns)) / num_columns
             p_text_column_affected = float(len(task.text_columns)) / num_columns
 
-            affected_column_type = np.random.choice(['numerical', 'categorical', 'text'], 1,
-                                                    p=[p_numerical_column_affected, p_categorical_column_affected,
-                                                       p_text_column_affected])
+            affected_column_type = np.random.choice(
+                ['numerical', 'categorical', 'text'],
+                1,
+                p=[p_numerical_column_affected, p_categorical_column_affected, p_text_column_affected]
+            )
 
             fraction = float(np.random.randint(100)) / 100
 
@@ -54,11 +55,12 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
                     if corruption_type == 'missing':
                         missingness = np.random.choice(['MCAR', 'MAR', 'MNAR'])
                         affected_column = np.random.choice(task.numerical_columns)
-                        random_corruptions.add(MissingValues(affected_column, fraction, na_value=np.nan,
-                                                             missingness=missingness))
+                        random_corruptions.add(MissingValues(affected_column, fraction, na_value=np.nan, missingness=missingness))
+
                     elif corruption_type == 'noise':
                         affected_column = np.random.choice(task.numerical_columns)
                         random_corruptions.add(GaussianNoise(affected_column, fraction))
+
                     elif corruption_type == 'scaling':
                         affected_column = np.random.choice(task.numerical_columns)
                         random_corruptions.add(Scaling(affected_column, fraction))
@@ -68,14 +70,14 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
                 if len(task.categorical_columns) >= 2 and np.random.uniform() < 0.1:
                     affected_columns = np.random.choice(task.categorical_columns, 2)
                     random_corruptions.add(SwappedValues(affected_columns[0], swap_with=affected_columns[1], fraction=fraction))
+
                 else:
                     corruption_type = np.random.choice(['missing', 'encoding'])
 
                     if corruption_type == 'missing':
                         missingness = np.random.choice(['MCAR', 'MAR', 'MNAR'])
                         affected_column = np.random.choice(task.categorical_columns)
-                        random_corruptions.add(MissingValues(affected_column, fraction, na_value='',
-                                                             missingness=missingness))
+                        random_corruptions.add(MissingValues(affected_column, fraction, na_value='', missingness=missingness))
 
                     elif corruption_type == 'encoding':
                         affected_column = np.random.choice(task.categorical_columns)
@@ -86,14 +88,14 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
                 if len(task.text_columns) >= 2 and np.random.uniform() < 0.1:
                     affected_columns = np.random.choice(task.text_columns, 2)
                     random_corruptions.add(SwappedValues(affected_columns[0], swap_with=affected_columns[1], fraction=fraction))
+
                 else:
                     corruption_type = np.random.choice(['missing', 'encoding'])
 
                     if corruption_type == 'missing':
                         missingness = np.random.choice(['MCAR', 'MAR', 'MNAR'])
                         affected_column = np.random.choice(task.text_columns)
-                        random_corruptions.add(MissingValues(affected_column, fraction, na_value='',
-                                                             missingness=missingness))
+                        random_corruptions.add(MissingValues(affected_column, fraction, na_value='', missingness=missingness))
 
                     elif corruption_type == 'encoding':
                         affected_column = np.random.choice(task.text_columns)
@@ -124,20 +126,25 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
                 performance_drop = (baseline_score - corrupted_score) / baseline_score
 
                 has_negative_impact = performance_drop > performance_threshold
-            except:
+
+            except Exception as err:
                 corrupted_score = None
                 has_negative_impact = True
+                print(f"Raised error: {err}")
 
             has_anomalies = len(tfdv_anomalies.anomaly_info) != 0
 
             if has_anomalies:
                 if has_negative_impact:
                     status = 'TP'
+
                 else:
                     status = 'FP'
+
             else:
                 if not has_negative_impact:
                     status = 'TN'
+
                 else:
                     status = 'FN'
 
@@ -148,4 +155,3 @@ def run(self, task, model, schema, num_corruptions, performance_threshold):
             outcome['corrupted_score'].append(corrupted_score)
 
         return pd.DataFrame.from_dict(outcome)
-
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..2b0df11
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+"""
+    Dummy conftest.py for jenga.
+
+    If you don't know what this is for, just leave it empty.
+    Read more about conftest.py under:
+    https://pytest.org/latest/plugins.html
+"""
+
+# import pytest