Added lots of improvements. Still lots of work to do.