add user functions