reader and writer interfaces