added java concept assignableFrom