safer par constructor (guarantee that par comes from input) + simpler calc constructor