Add command abstraction