user functions added