impl of basic operations for set