added many functions