add struct degradation func