implemented --report option in diagnose

* changed internal dictionary structure certain checks.
* updated some __doc__ strs
* code is a bit more readable