Make constructor private.  Add factory apply method that performs initialisation and parameter verfication.