use stdint.h types to guarantee width of integers across systems