would love to not have to repeat Voice here and in Client as well, wonder if there is a good a way to make it generic? E.g. If I wanted to make OAuth a module using this pattern.