updated user functions