use standard uintN_t types for portability