fix everything, and hide private from public.
hide private from public