Support multiple backends and add alloc backend

path.Join is preferable here