need to buffer data; don't forget