Refactored code to use NSOperations for downloading and largely refactored code base to increase readability and maintainability