slight character reduction from self-referencing readloop