Lots of improvements and additions