lots of changes here and there