abstract delayed reader creation into a method