add return type to DataReader to avoid type mismatch