lots of additions and changes