but keep current behavior whereby caller can pass an Info object. The readInfo method was the only one that takes an output argument, all the others just return some raw data. I like to fully construct my classes in their __init__ method. E.g. Info(**reader.readInfo())