later you must use emplace (how about Complex with custom types etc)