Main code: Lars-Dominik Braun <PromyLOPh@gmail.com>