add provider functions. finding one takes linear time but w/e