some refactoring and handle tacks downloading