u8 functions for internal use only