client model + tests