refactored Set operations