apparently, we don't create any new arrays in each frame
optimized MT.sign a little