use emplace_back where possible