Add onStart/onComplete hooks and processing spinner