A lot of optimizations ;)
A lot of changes ;)