#96 #101 - marks public non-static methods with inferred return type as error instead of warning
reorganizes template methods (override methods in front of the internal ones) and removes redundant result