adding support for sets of all types