used optional for reader interface