massive cleanup / reorganization, only true new functionality is factoring out of error messages