many different functions added