using mmap instead