Revised run() now buffers