change client generation to not require an interface