http://stackoverflow.com/questions/215497/in-java-difference-between-default-public-protected-and-private