final, and with a private no-args constructor