The StacIO class is declared as an abstract base class, but only two out of ten methods on it are abstract. That makes for a weird structure, where only some of the methods of an ABC need to be overridden in subclasses. I'm not sure what the right approach is here. Maybe a protocol?