separated client from ui