Added a lot of improvements.