using arrays instead of Float32Array for composability