refactor some class names for clarity; add support for sending upload status and progress back to the app