https://jackieadshead.uk/2009/04/playing-with-abstraction/
Playing with abstraction