@dr1ft because it's an extensible protocol and extensible is Software Design code for "I couldn't be arsed to actually decide what features are necessary so now no two implementations do the same thing", compounded by there being two clients and two servers that all have to work :|