Simplify ownership by using forward_list<T> rather than vector<unique_ptr<T>>