added more protocol independecne