add(*): more tests, smaller methods