How do I write a custom client selection protocol?