pokeByteOff addr off x = poke (addr `plusPtr` off) x
pokeElemOff addr idx x = poke (addr `plusPtr` (idx * sizeOf x)) x