list operation implementation