client splitted into different classes