add self sorting and list updating