introduce state module
rename download to fetching
using state model in all previous places
using helper method to determing state label