implement powerset