some variables no need to be public