Cleanup prompt API, move to pure component model implementation