adding TransactionalReader to handle a transactions for readers too to keep something consistent between readers and writers