add lazy initilization ,to prevent creating type multi times