lots of improvements :P