constructor generation