It's a bit unclear how this works - which method is the entry point for a provider and which methods need to return STARTED, FINISHED and WAIT?