no docs which describe that cls can be a string or a type
also not sure about this syntax, do we want to encourage foo = bar if ... else ..