maybe create more generalized way of testing functions? a lot of the logic in the test____ functions is the same. Probably not too important though, they're just test cases