added some documentation and progress reporting