https://datadosen.com/ms/Generic_programming