add `from_list/1`