prefer defaulted copy constructor if possible