revised client stuff