move idea
add assert