expose a new factory method (create) and reduce visibility of some of the methods which are not used outside of the class.