refactored Set to be an abstract on top of array