make a interface of just_one, list_of, elist_of