user functions updated