try to implemnet self list