abstract provider from commands