Question: I have my nav working almost exactly how I want it. The only issue left I can't seem to figure out is this little arrow image I use on a subnav which indicates it contains another level subnav.  

```
ul#css3menu ul span {
    background-image: url("images/arrowsub.png");
    padding-right: 28px;
}
ul#css3menu ul span:hover {
    background-image: url("images/arrowsubhover.png");
    padding-right: 28px;
}

```

When you hover over each subnav with an arrow, it loads a different color arrow image to maintain contrast with the background color that changes on hover.  

Problem is when you hover over the next level subnav, the arrow switches back while the background color remains changed (as it should).   

Why does the background color of the parent li not lose its hover rules but the arrow does?  

you can see the behavior and code with this [js fiddle](http://jsfiddle.net/eb96A/)

Answer: 
I'd recommend Google [protobuf](https://code.google.com/p/protobuf/): it is binary, stable, proven, and has bindings for all languages you've mentioned. Moreover, it also handles structured data nicely.
Thrift,Protobuf,JSON,MessagePack

complexity of installation Thrift >> Protobuf > BSON > MessagePack > JSON

serialization data size JSON > MessagePack > Binary Thrift > Compact Thrift > Protobuf

time cost Compact Thrift > Binary Thrift > Protobuf > JSON > MessagePack