add a bunch of functions