adopt Tim Pope Buffer Traverse