lots of additions/changes