Why do you make the constructor private? It doesn't seem to buy you anything, the `apply` in the companion simply forwards it to the constructor.