Add isCycle, still need to complete isSame()