nice.
allow variable buffer size