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: 
There is a binary json format called [bson](http://bsonspec.org/). 

> 
> I would also like to point out that a lot of these calculations will be taking place, so a text-based format (such as JSON) **may** produce far larger operation times.
> 
> 
> 

---

> 
> Do not optimize before you measured.
>  Premature optimization is the root of all evil.
> 
> 
> 

Can you have a try and benchmark the throughput? See if it fits your needs?
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