private type derivation