https://chrlschn.medium.com/structural-control-flow-with-object-oriented-programming-part-2-7d18526146de