use uint8_t to identify unsigned char