If it's a protocol, you should focus on defining it and providing the tools to work with it. I don't see how it's productive to build a protocol from scratch while building high-level applications. That's insane, and that's why there are so many relays and clients that don't implement all the functionality. Nobody had to build the TCP/IP stack to create an email client.