union operation implemented