add a bunch more functions