perhaps make caller responsible for closing