main constructor is private