many many improvements ;)