Major update. Adds lots of new functionality.