add more config flexibility to client