Add download and extract function