Most of Set fns, refactor map and set to abstract