fixed to use 32-bit integral values