more flexible reader