Worth doing some validation in the constructor?  That `payPeriodStart` is not after `payPeriodEnd`?