made some interal stuff protected/private