added lots of testing functions