better set manipulation