Uses the tutorial of Michael Harlt. However with more features