add dynamic cast