http://www.fullstackprep.dev/Articles/webd/csharp/how-to-write-clean-maintainable-csharp-code