Lots of additions and edits