more generic request generator