compiles, need atomic counters and stuff, still need to check a better way than push_back iterator