Add download util

See it's comments
data is now parsed before event emitting

The "emit()" call is cleaner
Refactoring code

No changes in how it works