client module and tests