Is the Unsafe module all about getting efficient conversions between types that have the same representations due to embedded newtypes? (If so, the issue is not about functoriality.)