moved invitation and request validations into the joinable concern