refact a new consumer with GenClient