buffering implemented