Lots of cleanup. Still needs work