a lot of cleanup