unrestricted union workaround