some modification about public method and public property.
I also modify the init