[add] handle the circular case