lots of cleanup