Should really use variant and the new strings, but that's too hard