update
add caution
easier to understand
minor update
duplicate elements case