replace protect to public