A lot of improvements :DDD