doing reader interface