many functions added