more sophisticated handling of union types