client-side building