Instead of using a list of applets with idle ones in front, we now use an ebtree. Aapplets in the tree are idle by definition. And the key is the applet's weight. When a new frame is queued, the first idle applet (with the lowest weight) is woken up and its weight is increased by one. And when an applet sends a frame to a SPOA, its weight is decremented by one. This is empirical, but it should avoid to overuse a very few number of applets and increase the balancing between idle applets.