fixed list_dispose() issuse (invalid read) + cleanup