Extract Fetch class and make it generic

also execute transform on off thread