lots of nice changes