added async command processing