Use lazy vals to enable delayed creation of client