refactory on list