add sort
add equal function