refactored voice command class