added powerset function