 						result = result.concat x
 					callback result
 
-		saveImage: (url, savePath) ->
+		saveImage: (url, savePath, callback) =>
 			if @debug
 				console.log 'saving image: ' + savePath
 			req = request url
 			req.pipe fs.createWriteStream savePath
+			if callback?
+				callback()
 
-		downloadProjectImage: (projectHash) ->
+		downloadProjectImage: (projectHash, callback) =>
 			@getProjectInfo projectHash, (projInfo) =>
 				asset = null
 				for x in projInfo.assets when x.has_image


			@done = false

		getJson: (url, callback) ->
			if @debug
				console.log 'json req: ' + url


					dir: @savePath
					base: projInfo.title

				@saveImage x.image_url, savePath, callback

		downloadAllUserLikes: (callback) =>
			for user in @usernames
				@getUserLikes user, (likes) =>
					i = 0
					likes = (like.hash_id for like in likes)
					if @limit > 0 and likes.length > @limit
						likes = likes.slice 0, @limit
					async.eachLimit likes, 5, @downloadProjectImage, (err) =>
						if @debug
							console.log 'Downloading done'
						if callback?
							callback err
