add read method which takes limit on how much to read as argument
Set limit on how much is read from fd, check if read/write pointers are at same place, change add to write