basic client structure