Does it make sense to hide the constructor and export only a smart constructor?