you can just check this pull request as the example of issues related to excessive use of type name in places where they can be derived automatically: some part of this delta is redundant and does not contain any useful information like ```Options *``` -> ```auto``` (it can be uglier ```Options *``` -> ```std::shared_ptr<Options>``` :-o)