updated voice logic