buffer chaining still not ideal, but works for simple cases. starting to add q pop and push