several functions added