Lots of additions and new functionality