Translated by haruyama