don't use of anonymous unions
remove deprecated register keyword