initial implementation of union