Lots of clean up and additions