separate reading-logic