* a lot of testing and such