Redo some parts of my previous commit, thanks Jens and Dave