refactoring block buffer interface