progress bar
some cleanup and convenience
auto destruct