eh eh... sharing empty is kind of useless... it contains the specific
builder, which changes with each (K,V) pair...
possibly something (ugly) can be done by using erasure and casting...