added complement, remove, partition