Rewrite

Here we go :)

As discussed, quite some changes + crazy hacks ;)