move initialization to io subclasses