implemented buffer