several function added