client: Add base implementation