Added ingenious change detection trick from @smoothify though at the cost of verbosity controls. (Quiet or verbosity > 1 breaks change detection. Also added better use of module_common methods.