Add uploadWithCallbacks()