//do for all cases, we have to set cookies and also load session
    add_action('wp_loaded', 'dvin_wcql_getlist_frm_session');
    // After WP and plugins are loaded.
    add_action('wp', array('Dvin_Wcql', 'set_session_cookies'), 100);
    // Set session cookies
    Dvin_Wcql::load_ajax_includes();
    //add ajax includes
}
if (!defined('DOING_AJAX') || !DOING_AJAX) {
    //this array would be used in in determine which hook and priority  to use for which position
    $dvin_wcql_link_positions = array('After Add to Cart' => array('hook_name' => 'woocommerce_single_product_summary', 'priority' => 30), 'After Thumbnail' => array('hook_name' => 'woocommerce_product_thumbnails', 'priority' => 40), 'After Product Summary' => array('hook_name' => 'woocommerce_single_product_summary', 'priority' => 40), 'Replace Add To Cart' => array('hook_name' => 'woocommerce_after_add_to_cart_button', 'priority' => 40));
    //include required files based on admin or site
    if (is_admin()) {
        //for admin
        //admin  files
        Dvin_Wcql::load_backend_includes();
        require_once 'metabox.php';
        require_once 'product_cat_metabox.php';
    } else {
        // for site
        add_action('wp_enqueue_scripts', 'dvin_qlist_scripts_styles');
        Dvin_Wcql::load_site_includes();
        $dvin_wcql_obj = new Dvin_Wcql($_REQUEST);
        //create object
        add_action('wp', array('Dvin_Wcql', 'set_session_cookies'), 100);
        // Set session cookies
        add_action('wp_loaded', 'dvin_wcql_initialize');
        // After WP and plugins are loaded.
    }
    /* initializes the plugin in front end **/
    function dvin_wcql_initialize()