implemented error callback, started implementing progress callback (unsure if it works)