list: add circular list support