should be changes to final class with private constuctor