I think it's clearer to use a type like uint16_t. If overflow is a concern, then there should be an explicit overflow check. How about starting out with uint8_t and overflow checking?