added buffer parameter