adapted to use submodule zlib