implement the buffer reader