             dg::blas2::symv( m_inter, m_v, m_fine_v);
             dg::blas2::symv( m_inter, m_temp[1], m_fine_temp[1]);
             dg::blas2::symv( m_inter, m_temp[2], m_fine_temp[2]);
-            dg::blas1::subroutine( shu::UpwindAdvection(), m_fine_yp,
-                    m_fine_temp[1], m_fine_temp[2], m_fine_v);
+            dg::blas1::evaluate( m_fine_yp, dg::minus_equals(), dg::UpwindProduct(), m_fine_v, m_fine_temp[2], m_fine_temp[1]);
             // v_y dy n
             dg::blas2::symv( 1., m_centered[0], m_psi, 0., m_v); //v_y
             dg::blas2::symv( m_forward[1], y, m_temp[1]);

            dg::blas2::symv( m_inter, m_temp[1], m_fine_temp[1]);
            dg::blas2::symv( m_inter, m_temp[2], m_fine_temp[2]);
            dg::blas2::symv( m_inter, m_v, m_fine_v);
            dg::blas1::subroutine( shu::UpwindAdvection(), m_fine_yp,
                    m_fine_temp[1], m_fine_temp[2], m_fine_v);
        }
        else if( "centered-advection" == m_advection)
        {

            dg::blas1::pointwiseDot( m_fine_y, m_fine_v, m_fine_temp[0]); //f_x
            dg::blas2::symv( m_fine_forward[0], m_fine_temp[0], m_fine_temp[1]);
            dg::blas2::symv( m_fine_backward[0], m_fine_temp[0], m_fine_temp[2]);
            dg::blas1::evaluate( m_fine_yp, dg::minus_equals(), dg::Upwind(), m_fine_v, m_fine_temp[2], m_fine_temp[1]);
            //dy ( nv_y)
            dg::blas2::symv( 1., m_fine_centered[0], m_fine_psi, 0., m_fine_v); //v_y
            dg::blas1::pointwiseDot( m_fine_y, m_fine_v, m_fine_temp[0]); //f_y
            dg::blas2::symv( m_fine_forward[1], m_fine_temp[0], m_fine_temp[1]);
            dg::blas2::symv( m_fine_backward[1], m_fine_temp[0], m_fine_temp[2]);
            dg::blas1::evaluate( m_fine_yp, dg::minus_equals(), dg::Upwind(), m_fine_v, m_fine_temp[2], m_fine_temp[1]);
        }
        else if( "centered" == m_advection)
        {
