don't base cycle on chain (bad behavior for cycle([]))