add buffering interface