more flexible model for chunked reads - can change buffer size on each step if desired