Optimized filter adding by name, avoid adding filters during enumeration (System.InvalidOperationException: Collection was modified; enumeration operation may not execute.)

Make sure DSCategory gets disposed
Fixed error updating program states
Replaced server call by check of channel state (reduces roundtrip time)