seguir con ptrs inteligentes, usar dynamic pointer cast