reader constructor