based on yi12345 version