added buffer interface