Simplify some more ownership using forward_list<T> rather than vector<unique_ptr<T>>