async downloading with cap, better ui