what's the point of the dynamic cast here? Only the base interface ::surface method is used.