lots of functions added