use async and pagelocked mem somewhere. some refactoring. todo : improve reshuffling speed