Uses bufio to interact with the read/write interfaces