https://peterkellner.net/2014/05/08/tuples-in-c-a-useful-example/