add GenericAndUpcasting