function introdution finished