better to use boost::uint32_t