add tests, fix pow