boilerplate client