This should be a rite of passage: Read a sizeable RFC and make a passable implementation.