Developed during my studies in Paderborn.