reimplement gd downloading