Thanks to Slaven Rezic for a lot of constructive feedback!