avoid Foreign.unsafePerformIO