created union and assignment operators