cherry picked some rules from the MSDN style guide