add buffering_source that uses a circular buffer