restructure and use ClientBundle