implement virtual commands