don't create buffer for each recursive level