I think the batter way would be to make constructor private and provide a factory function