Woocommerce Change placement with wrapper

Okay I solved this but don’t know it is right way or wrong way. Hope you expert will give some better guideline.

What I did just added two function into my add_action function and use those as a wrapper.

// adding and re arranging placement
function q2a_product_summary() {

    function wrapstart () {
        echo '<div class="buy-box">';
    }

    function wrapend () {
        echo '</div>';
    }

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );  

    add_action( 'woocommerce_single_product_summary', 'wrapstart', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    add_action( 'woocommerce_single_product_summary', 'wrapend', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );

}
add_action('woocommerce_single_product_summary', 'q2a_product_summary');

Is it only and correct way to do? I am sure there must be a better way than this long and messy way.

Please suggest.