added unions, pretty mechanical