better wording and indenting
fixing detection of clang
adding explicit test for some modifiers
reducing redundancy of type definitions to ease maintenance