non-blocking reads are less complicated